wildfirechat / im-server

即时通讯(IM)系统
http://docs.wildfirechat.cn
Other
7.83k stars 1.78k forks source link

数据库中t_messages_x的规则是怎么设置的,如何按照_mid去判断信息在哪个表中 #620

Closed mankind-evolve closed 1 year ago

mankind-evolve commented 1 year ago

文档中这么写的

在数据库中有两类表,一类是t_messages_x,这个是消息的原始数据表,按照月份分成36张表。

但是如何按照_mid去判断信息在哪个表中?

mankind-evolve commented 1 year ago

我是按照信息的时间戳算出月份 按照月份减一 然后在这个表中找,但是我发现 2023年5月份 的信息存在了 序列 16 的表中

mankind-evolve commented 1 year ago

难道是 年份 取余 3 然后乘以12 再加月份吗?

heavyrain2012 commented 1 year ago

没有办法根据mid来获取时间,一般有mid的时候就会有消息时间,可以根据消息时间来判断在那张表中

mankind-evolve commented 1 year ago

怎么判断? 是什么样子的算法?

heavyrain2012 commented 1 year ago

https://docs.wildfirechat.cn/faq/server.html 问题2

mankind-evolve commented 1 year ago

A. 使用h2db存储消息时,消息存储在t_message标中;使用mysql存储消息时,消息存储在t_message_X表中,X等于 月份-1+(年份%3)\12 ,例如2019年4月存储在t_message_3表中(4-1+(2019%3)12).