大家是如何汇总分表数据的?

纸牌屋弗兰克
  • 2.7k

比如评论表,我们分成了 100 张表,按照 userid 哈希算法分,那么后台管理要显示评论列表,总不能联合查询 100 张表,这种情况大家是如何做的?

回复
阅读 2.9k
4 个回答
纸牌屋弗兰克
  • 2.7k
✓ 已被采纳

我觉得还有一个方法,就是建一张评论总表,这张表的字段不必跟分表一致,最关键的是要评论 id,和创建时间,后台管理就可以读取这张总表,评论的详情字段去分表查询。

比如一页 50 条记录,最多 50 次另外的查询,分别去分表查询详情数据展现出来,虽然多一些查询,但是在后台管理系统用不会造成很大压力,

范捷琦Jackie
  • 1.8k

我提个曲线救国的方法,就别按userid分表了,怪累的,直接根据评论时间按月分表,我们的经验是Mysql的话每张表不超过2000万条数据就行,这样汇总起来就方便多了,后台管理唯一需要注意的就是pagination的问题。

就算是抛砖引玉了,希望能帮到你。

更新:flc1125提到了负载的问题,我顶多能想到加redis缓存,还想问问这个评论的主要查询业务是啥?是展示某个文章的最近评论?

首先你的表拆分法是对的。其次增加一个同步表。该表的数据保留最近X天的评论数据,数据来源,由其他100个表用联合组成;数据操作由定时或mq方式同步过去。该表仅用于后台使用(或并发量小的业务)

新建一张表,每隔一段时间更新这张表,比如页面一次加载三十条评论,那么就一次查出三十条数据,等到时候页面载入时从这里取。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏