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

2014-02-11 10:39:03 +08:00
 jacky007wang
情景:
目前有个表,有几亿条记录(大概是3亿,非常详细的没统计,因为count(*)一次就卡死),插入以后基本只读,不会更新和删除。

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

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

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

另外如果实在要减少停机时间的话,也可以考虑想办法建立主从机制,然后在slave上做修改
jacky007wang
2014-02-11 12:49:08 +08:00
@msg7086 嗯,研究下select into,主从的太高端了,得以后考虑了
yangqi
2014-02-14 10:59:49 +08:00
考虑partition不?
jacky007wang
2014-02-14 12:38:22 +08:00
@yangqi 初步的方案已经在本地测试好了,就是用的水平分表
用这个sql:insert into new_table xxx select from old_table xxx where xxx
把老表里的数据都分到新表

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

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

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

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

© 2021 V2EX