分享更有价值
被信任是一种快乐

MySQL修改大表工具pt-online-schema-change的原理

文章页正文上

这篇文章主要讲解了“MySQL修改大表工具pt-online-schema-change的原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL修改大表工具pt-online-schema-change的原理”吧!MySQL修改大表工具pt-online-schema-change的使用限制:1)、如果修改表有外键,除非使用 –alter-foreign-keys-method 指定特定的值,否则工具不予执行2)、被修改表必须要有主键,否则报错:Cannot chunk the original table `houyi`.`ga`: There i免费主机域名s no good index and the table is oversized. at ./pt-online-schema-change line 5353.3)、被修改表上不能有针对after delete|insert|update三个触发器,否则修改表结构操作失败MySQL修改大表工具pt-online-schema-change原理:1)、首先使用帐号密码连接到mysql后,获取指定表的状态信息,检查是否有触发器,检查表是否有主键。2)、接着按照修改表的表定义,新建一个名为’_tb_new’不可见的临时表,对这个表执行alter添加字段,并校验是否执行成功。3)、然后针对源表创建三个触发器,分别如下:create trigger db_tb_del after delete on db.tb for each row delete ignore from db._tb_new where db._tb_new.id OLD.id #删掉新表中db._tb_new.id OLD.id的数据,否则忽略操作create trigger db_tb_del after update on db.tb for each row replace into db._tb_new(id,…) values(new.id,…) #源表执行update的时候,把对应的数据replace into的方式写入新表create trigger db_tb_del after insert on db.tb for each row replace into db._tb_new(id,…) values(new.id,…) #源表执行insert操作的时候,把对应的数据replace into的方式写入新表4)、触发器创建好之后会执行insert low_priority ignore into db._tb_new(id,..) select id,… from tb lock in share mode语句复制源表数据到新表。5)、复制完成之后执行语句:rename table db.tb to db._tb_old,db._tb_new to db.tb同时把源表修改为_tb_old格式,把新表_t免费主机域名b_new修改为源表名字的原子修改。6)、接着,如果没有加不删除old表的选项,那么就会删除Old表,然后删除三个触发器。到这里就完成了在线表结构的修改 。整个过程只在rename表的时间会锁一下表,其他时候不锁表。感谢各位的阅读,以上就是“MySQL修改大表工具pt-online-schema-change的原理”的内容了,经过本文的学习后,相信大家对MySQL修改大表工具pt-online-schema-change的原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云技术,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: 如何查看Oracle数据库是企业版还是标准版

这篇文章主要为大家展示了“如何查看Oracle数据库是企业版还是标准版”,内容简而易懂,条理清晰,希望能够帮助大家免费主机域名解决疑惑,下面让小编带领大家一起研究并学习一下“如何查看Oracle数据库是企业版还是标准版”这篇文章吧。 1.查看v$version…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册