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
jacky007wang
V2EX  ›  MySQL

MySQL如何最快分表?把几亿条数据,分为若干个表,每个表5000万条记录。

  •  
  •   jacky007wang · 2014-02-11 10:39:03 +08:00 · 5468 次点击
    这是一个创建于 3966 天前的主题,其中的信息可能已经有所发展或是发生改变。
    情景:
    目前有个表,有几亿条记录(大概是3亿,非常详细的没统计,因为count(*)一次就卡死),插入以后基本只读,不会更新和删除。

    遇到的问题,一个是备份比较麻烦,备份一次就很久,另外就是性能也比较差,将来预计数据的赠长会大大增加,所以想把这些记录按照id分表,每个表5千万条。

    想到的解决方案是,不停机,把分表都创建好,然后插入数据,最后切换到分表,保证当机时间最短。

    现在的问题就是,如何能最快的把几亿条数据,先导出再导入的分表里?
    感谢大家支招。
    4 条回复    1970-01-01 08:00:00 +08:00
    msg7086
        1
    msg7086  
       2014-02-11 11:07:05 +08:00   ❤️ 1
    分表插数据的话,不知道select into直接插效率如何。

    另外如果实在要减少停机时间的话,也可以考虑想办法建立主从机制,然后在slave上做修改
    jacky007wang
        2
    jacky007wang  
    OP
       2014-02-11 12:49:08 +08:00
    @msg7086 嗯,研究下select into,主从的太高端了,得以后考虑了
    yangqi
        3
    yangqi  
       2014-02-14 10:59:49 +08:00   ❤️ 1
    考虑partition不?
    jacky007wang
        4
    jacky007wang  
    OP
       2014-02-14 12:38:22 +08:00
    @yangqi 初步的方案已经在本地测试好了,就是用的水平分表
    用这个sql:insert into new_table xxx select from old_table xxx where xxx
    把老表里的数据都分到新表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2703 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 05:56 · PVG 13:56 · LAX 21:56 · JFK 00:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.