› 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 · Feb 11, 2014 · 6295 views
    This topic created in 4614 days ago, the information mentioned may be changed or developed.
    情景:
    目前有个表,有几亿条记录(大概是3亿,非常详细的没统计,因为count(*)一次就卡死),插入以后基本只读,不会更新和删除。

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

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

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

    另外如果实在要减少停机时间的话,也可以考虑想办法建立主从机制,然后在slave上做修改
    jacky007wang
        2
    jacky007wang  
    OP
       Feb 11, 2014
    @msg7086 嗯,研究下select into,主从的太高端了,得以后考虑了
    yangqi
        3
    yangqi  
       Feb 14, 2014   ❤️ 1
    考虑partition不?
    jacky007wang
        4
    jacky007wang  
    OP
       Feb 14, 2014
    @yangqi 初步的方案已经在本地测试好了,就是用的水平分表
    用这个sql:insert into new_table xxx select from old_table xxx where xxx
    把老表里的数据都分到新表
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2610 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:01 · PVG 21:01 · LAX 06:01 · JFK 09:01
    ♥ Do have faith in what you're doing.