手机版
你好,游客 登录 注册
背景:
阅读新闻

MySQL普通表转换为分区表(MySQL-5.6.25,MySQL-5.7.7-rc)

[日期:2015-08-07] 来源:Linux社区  作者:wangwenan6 [字体: ]

考虑到设计人员没有规划好表的容量,某些业务表体积过大以后,需要将以前的表转换为分区表的需求,简单记录一下MySQL的分区表转换功能,

测试环境:MySQL-5.6.25和MySQL-5.7.7-rc

本着学习的原则,先把百度方法中的,中间表->锁表->导数据->rename,放在一边,先试着能否直接用alter来转换表结构,类似于Oracle的直接转换

先在MySQL-5.7.7-rc环境下建表

插入数据

试一下如下语句:ALTER TABLE students PARTITION BY KEY(sid) PARTITIONS 2;

ok成功了.......看上去这样子比百度方法"中间表->锁表->导数据->rename"要方便很多?

是的,反正都会锁表,虽然时间和效率上面不知道优劣,但是反正要锁表,都要停止这个表上的业务不是么...........

那么,转换分区表以后,原有的数据会不会自动转移到新的分区表里面去呢?

重新建表,添加数据,换一个分区方式试一下

查看分区的数据

如预想一般

如果有严格的不能停业务的要求,那么用主从结构,从库(别开只读)的这张表事先建立为分区表,然后进行同步,找个合适的时机把应用层的DB config换掉就好(好像还是有一小段时间的停机?就算用双主也还是会有一致性的问题,应用层的短暂停止就当做没有吧OTZ.....)

---------------------------------------------------------这只是一篇简单的,简短的,偷懒没有进行详细性能效率对比的,博客的小尾巴,over撒花~-------------------------------------------------------------

附上MySQL-5.6.25的截图

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-08/121268.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款