mysql大表更新comment方案

最近由于业务需要,要更新一个mysql大表的部分字段的comment,于是,首先想到的是用alter table xxx modify。本以为mysql的modify命令可以做到只是简单修改frm文件,然而它有一个致命的弱点,那就是modify命令必须加上字段定义。官方语法如下:

| MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]

可以看到,一定需要加上column_definition。所以,这样一来,modify操作肯定就不是简单的修改frm文件了,他会遍历表里面每一行数据,然后修改该字段。这对于一个上亿条数据的大表来说,简直就是噩梦。这样的操作可能需要几个小时甚至几天,于是我果断抛弃了这一方案。

后来我想了一下,comment不就是在frm文件里面,如果我们能够自己修改frm文件,那不就可以了。于是便有了如下方案:

①:在test库下建一个与原表a一模一样的表test.a,除了要更新的那几个字段的comment不一样。
②:关闭mysql。
③:mv a.frm /tmp
④:cp -p test/a.frm ./ (-p 为了保证权限等属性没有被改动)
⑤:启动mysql

done。果然可以。

注:我这个mysql版本是:5.5.40-36.1

你可能感兴趣的:(mysql)