数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

高性能MySQL:只修改.frm 文件


发布日期:2023年05月04日
 
高性能MySQL:只修改.frm 文件

只修改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开发培训视频教程

数据仓库与数据挖掘培训视频教程

上一篇:高性能MySQL:加快ALTER TABLE 操作的速度

下一篇:高性能MySQL:快速创建MyISAM索引