关于数据量太大,需要分表的问题

2019-09-26 11:48:38 +08:00
 zdt3476
  1. 这个表是战斗记录表 关键的几个字段有pid,war_start_time,war_id,team_id
  2. 对于这张表有两种查询方式,根据war_start_time倒序查询指定pid的数据,以及根据war_id=? and team_id=?的形式查询玩家所在队伍的数据。
  3. 现在这张表有 10 亿的数据,在不根据时间清理数据的情况下,有什么分表的方案吗?
  4. 目前想到的是,可以根据war_id进行 hash,不过这样在查询单个玩家的数据的时候,就得汇总所有分表的查询结果,而且分成几个表也不好定。
5258 次点击
所在节点    MySQL
8 条回复
sadfQED2
2019-09-26 12:02:13 +08:00
根据 pid 建立一个索引表用 pid 分表,再根据 war_id 和 team_id 建立一个索引表,用 war_id+team_id 分表,索引表可以分 1024 张,根据 pid 查询的时候有 pid 索引表,根据 war_id+team_id 查询的时候走 war_id+team_id 的索引表
boyhailong
2019-09-26 12:06:54 +08:00
“war_start_time 倒序查询指定 pid 的数据”,什么功能需求需要直接从数据库这么查数据,实时性要求高吗
“ar_id=? and team_id=?” 这么多需求,先设置索引再说
boyhailong
2019-09-26 12:07:30 +08:00
@sadfQED2 感觉楼主不懂数据库设计 在这求方案
Raymon111111
2019-09-26 13:12:19 +08:00
再加上用玩家 id 分表
zdt3476
2019-09-26 13:35:34 +08:00
@sadfQED2 意思是多了一份冗余数据是吗?这样插入的时候要插入两份?
zdt3476
2019-09-26 13:37:34 +08:00
@boyhailong 我没说清楚,因为有分页查询的需求,索引肯定是有加的。 确实对数据库不熟,来求方案的。
wysnylc
2019-09-26 14:56:23 +08:00
一致性哈希分库分表解决数据量大问题,热点数据额外存储解决一致性哈希无法区分冷热数据问题
jrient
2019-09-26 17:35:21 +08:00
按照时间分呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX