V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
zdt3476
V2EX  ›  MySQL

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

  •  
  •   zdt3476 · 2019-09-26 11:48:38 +08:00 · 5328 次点击
    这是一个创建于 1876 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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,不过这样在查询单个玩家的数据的时候,就得汇总所有分表的查询结果,而且分成几个表也不好定。
    第 1 条附言  ·  2019-09-26 13:38:25 +08:00
    忘了说,根据 PID 查询时需要分页。
    8 条回复    2019-09-26 17:35:21 +08:00
    sadfQED2
        1
    sadfQED2  
       2019-09-26 12:02:13 +08:00 via Android   ❤️ 1
    根据 pid 建立一个索引表用 pid 分表,再根据 war_id 和 team_id 建立一个索引表,用 war_id+team_id 分表,索引表可以分 1024 张,根据 pid 查询的时候有 pid 索引表,根据 war_id+team_id 查询的时候走 war_id+team_id 的索引表
    boyhailong
        2
    boyhailong  
       2019-09-26 12:06:54 +08:00   ❤️ 1
    “war_start_time 倒序查询指定 pid 的数据”,什么功能需求需要直接从数据库这么查数据,实时性要求高吗
    “ar_id=? and team_id=?” 这么多需求,先设置索引再说
    boyhailong
        3
    boyhailong  
       2019-09-26 12:07:30 +08:00
    @sadfQED2 感觉楼主不懂数据库设计 在这求方案
    Raymon111111
        4
    Raymon111111  
       2019-09-26 13:12:19 +08:00   ❤️ 1
    再加上用玩家 id 分表
    zdt3476
        5
    zdt3476  
    OP
       2019-09-26 13:35:34 +08:00
    @sadfQED2 意思是多了一份冗余数据是吗?这样插入的时候要插入两份?
    zdt3476
        6
    zdt3476  
    OP
       2019-09-26 13:37:34 +08:00
    @boyhailong 我没说清楚,因为有分页查询的需求,索引肯定是有加的。 确实对数据库不熟,来求方案的。
    wysnylc
        7
    wysnylc  
       2019-09-26 14:56:23 +08:00
    一致性哈希分库分表解决数据量大问题,热点数据额外存储解决一致性哈希无法区分冷热数据问题
    jrient
        8
    jrient  
       2019-09-26 17:35:21 +08:00
    按照时间分呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2630 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.