回收mysql表的碎片
由於操作人員大量的刪除了relationship表的資料達2千萬行,但是mysql並不自動回收空間,所以決定做碎片整理(先測試):
myisamchk -r relationship
我是在mysql執行下做的,結果做完後查詢的時候出現下面的問題:
ERROR 1030 (00000): Got error 127 from table handler
這個問題很鬱悶,應該不會出現問題的呀,後來查閱資料發現了問題():
如果你用--skip-locking執行mysqld(它在一些系統上是預設的,如Linux),當
mysqld正在使用同一個表時,你不能可靠地使用myisamchk檢查一張表。如果你能
肯定在你執行myisamchk時沒有人透過mysqld正在存取表,在你開始檢查表之前,
你僅需做mysqladmin flush-tables。如果你不能保證, 那麼當你檢查表時,你必
須停掉mysqld。如果你在mysqld正在更新表時執行myisamchk,你可能得到一個表
已破壞的警告,即使它沒有。
如果你沒使用--skip-locking,你能在任何時間使用myisamchk檢查表。當你這樣
時,所有試圖更新表的客戶在繼續前將等到myisamchk就緒。
如果你使用myisamchk修復或最佳化表,你必須總是保證mysqld伺服器不在使用表(如
果你正在使用--skip-locking,這也適用)。如果你不停掉mysqld,在你執行
myisamchk前,你至少應該做一個mysqladmin flush-tables。
而我的資料庫恰好在linux下,並且是skip-locking啟動的,就出現了這個問題!
1)這個命令也可以停止mysql後再做,就不會出現這個問題
2)也可以線上做後重啟資料庫
3)也可以先執行mysqladmin flush-tables後再執行這個命令,也不會出現這個問題!
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7916042/viewspace-893081/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql表碎片的查詢自己回收MySql
- MySQL表碎片整理MySql
- MySQL的表碎片處理MySql
- MySQL的 data_free,表碎片整理MySql
- Oracle 表碎片Oracle
- MySQL關於表碎片整理OPTIMIZE TABLE操作的官方建議MySql
- oracle表碎片整理Oracle
- ORACLE表空間的碎片整理Oracle
- MysqL碎片整理優化MySql優化
- 表碎片的相關知識(ZT)
- zt_Segment Advisor監控物件的碎片程度並回收物件
- mysql簡單的碎片清理指令碼MySql指令碼
- MySQL資料碎片的整理和分析MySql
- Oracle 整理表碎片、釋放表的空間Oracle
- Sqlserver的表沒有高水位但是有碎片的概念,sqlserver表的碎片的檢視和整理方法SQLServer
- Oracle資料表碎片整理Oracle
- 表空間碎片檢測
- mysql之 OPTIMIZE TABLE整理碎片MySql
- oracle 表碎片太多的處理辦法Oracle
- TimesTen記憶體碎片(高水位)回收步驟詳解記憶體
- Oracle資料庫表碎片整理Oracle資料庫
- Java 18 如何改進處理大型物件回收的記憶體碎片問題? -Java物件記憶體
- Oracle 表空間回收Oracle
- Oracle 資料庫整理表碎片Oracle資料庫
- oracle表碎片以及整理(高水位線)Oracle
- Tablespace Fragmentation - 表空間碎片問題Fragment
- 表碎片起因及解決辦法
- MySQL碎片整理小節--例項演示MySql
- 表碎片起因及解決辦法(zt)
- Oracle表碎片起因及解決辦法Oracle
- MySQL回收某一授權MySql
- Oracle 找出需要回收高水位的表Oracle
- 如何處理表空間級別,表級別,索引級別的碎片索引
- 資料庫優化之表碎片處理資料庫優化
- 學習記錄:MySQL碎片化的原因及解決方案?MySql
- undo表空間不能回收的解決方法
- 表中出現碎片,造成查詢、DML操作變慢
- oracle 回收表空間的資料檔案大小Oracle