【五】高性能MySql笔记——快速ALTER TABLE(Hack手法)

    MySql中大数据表的ALTER TABLE操作是非常耗时的。今天讨论下如何快速完成表结构的修改?

    ALTER TABLE的原理是用新结构创建一张新表,然后将旧表的数据拷贝进新表,最后再删除旧表。ALTER TABLE会导致数据操作服务中断。常用的方式是主备切换影子拷贝

    主备切换:先在一台不提供服务的机器上执行ALTER TABLE操作,然后和提供服务的主库进行切换。

    影子拷贝:用要求的表结构创建一张和源表无关的新表,然后通过重命名和删除表操作交换两张表。

    Hack手法

    理论:由于MySql表中列的默认值实际上存在表的.frm文件中,所以可以直接修改这个文件而不需要改动表本身。MySql官方并没有采用这种优化方法,所有的MODIFY COLUMN操作都将导致表重建。或者我们可以使用ALTER COLUMN,这句话可以直接修改.frm文件而不涉及表数据。因此ALTER COLUMN操作比ALTER TABLE操作快很多。

    方法:直接修改.frm文件的方法虽然可以快速修改表,但却存在一定的风险,所以在使用时应该考虑清楚。基本技术是创建一个新的.frm文件,然后替换掉旧的.frm文件。

    步骤

        ①创建一张有相同结构的空表,并进行所需要的修改;

        ②执行FLUSH TABLES WITH READ LOCK锁定所有正在使用的表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值