只修改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開發培訓視頻教程
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/MySQL/201311/29671.html