2017-03-09 162 views
0

我的表格文件大小(.MYD文件)增加了大約100%。 如果我查看數據,那麼在過去幾天裏只有正常的日常負載。什麼可能導致文件大小增加?MyISAM文件大小增加了(加倍)

myisamchk的

如所建議的通過我試圖sudo myisamchk -r tablename用戶。此操作的結果是「修復索引1」「修復索引2」...和完全相同的文件大小。

編輯:第二次運行該命令後,文件大小減小到正常(一半)大小。

+0

可能重複[自動或定期備份mysql數據](http://stackoverflow.com/questions/38916163/automated-or-regular-backup-of-mysql-data) – e4c5

+0

@ e4c5 - 這個問題不是與mysql備份相關。我將編輯它以使其更清晰 – Gerfried

+1

您可能已刪除了很多行,但空間未被回收。嘗試myisamchk https://dev.mysql.com/doc/refman/5.7/en/myisam-optimization.html – e4c5

回答

1

@ e4c5有最可能的答案。他要求您刪除已刪除的行。 MySQL不會從刪除的行中回收空間。隨着越來越多的行被刪除,你的.MYD變得越大。回收空間的唯一方法是重建.MYD - 通過重新創建表,使用optimize table命令或運行myisamchk -r。

以下命令將重建表。

optimize table $table_name; 

的myisamchk的-r命令行方式也工作 - 但可以肯定的表被鎖定,以防止用戶訪問它(否則您將數據丟失的非常現實的風險)。在運行myisamchk修復之前,確保刷新表之前再次使用它,否則MySQL將檢測到表已更改,並針對它執行不必要的檢查。在這三種方法中,myisamchk -r是最容易丟失數據的方法(但仍然是我的首選方法 - 您只需要小心謹慎並做好最壞的準備)。

0

這聽起來像是你每天都在更換整個桌子。這是一個最佳的方式來做到這一點;不膨脹,不OPTIMIZE

CREATE TABLE new LIKE real; 
populate `new` 
RENAME TABLE real TO old, 
      new TO real; 
DROP TABLE old; 

這樣,你建立一個清潔,新,表,並在將其交換請注意,表總是可用的;也就是說,沒有停機時間。