只修改frm 文件
从上面的例子我们看到修改表的frm 文件是很快的但MySQL 有时候会在没有必要的时候也重建表如果愿意冒一些风险可以让MySQL 做一些其他类型的修改而不用重建表
我们下面要演示的技巧是不受官方支持的也没有文档记录并且也可能不能正常工作采用这些技术需要自己承担风险建议在执行之前首先备份数据!
下面这些操作是有可能不需要重建表的
移除(不是增加)一个列的 AUTO_INCREMENT属性
增加移除或更改ENUM和SET常量如果移除的是已经有行数据用到其值的常量查询将会返回一个空字串值
基本的技术是为想要的表结构创建一个新的frm 文件然后用它替换掉已经存在的那张表的frm 文件像下面这样
创建一张有相同结构的空表并进行所需要的修改(例如增加ENUM 常量)
执行FLUSH TABLES WITH READ LOCK这将会关闭所有正在使用的表并且禁止任何表被打开
交换frm 文件
执行UNLOCK TABLES 来释放第 步的读锁
下面以给sakilafilm 表的rating 列增加一个常量为例来说明当前列看起来如下
返回目录高性能MySQL
编辑推荐
ASPNET MVC 框架揭秘
Oracle索引技术
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程