6_3、大数据量时如何进行DDL操作

修改表结构(如添加字段、添加索引)会给数据表加表级锁,当表中数据量较大时,会导致阻塞时间很长。

那么对于数据量大的表,如何在线修改表结构呢?

一、方法一–滚动升级

停掉mysql服务器来修改表结构,然后进行滚动式更新:

1、比如很多台mysql服务器,先把主服务器停掉来更新(一般多台主服务器,让其他主服务器提供服务)

2、等到更新完,就滚动到从服务器(在此之前是其他从服务器提供服务的)

这种方案必须能够停掉mysql服务器来修改字段,mysql服务器越多,就需要的时间越长,只有等到更新完毕,才能把部署上线新的业务逻辑。

二、方案二–使用专门的pt-online-schame-change工具

这些工具的原理为:
1、创建一个新表tmp_names
2、执行insert into tmp_names(****) select ***** from video_name;
3、删除video_names
4、重命名tmp_name为video_names;语句为rename table tmp_names to video_names;

5、当在执行期间,数据有更新如何处理?

工具的解决办法思路是,在原表中创建几个触发器,针对uptate、delete 、insert操作都记录下来,这样子把对原表的操作记录下来,方便更新到新建立的表中去。

参考:

1、https://juejin.cn/post/6993339537824940046

2、https://www.cnblogs.com/wangtao_20/p/3504395.html

1、从开发者视角学习MYSQl系列文章:https://blog.csdn.net/maoxuemin/article/details/123523457;
2、快速问答:https://gitee.com/wendakuai/introducton/wikis/question

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值