我已經在我的MySQL 5.1.41中對錶進行了分區,這些表保存了大量的數據。最近,我刪除了大量導致大約500 GB碎片的數據,但分區中有很多數據。MySQL - 重建分區vs優化分區
要將該空間回收到操作系統,我必須對分區進行分解。我提到MySQL文檔,https://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html其困惑我用下面的語句,
重建分區:重建分區;這與刪除存儲在分區中的所有記錄具有相同的效果,然後 將它們重新插入。這對於碎片整理很有用。
優化分區:如果已經刪除大量行的從一個分區,或者如果你已與可變長度行許多變化,以分區 表(即,具有VARCHAR,BLOB或 TEXT列),可以使用ALTER TABLE ... OPTIMIZE PARTITION來回收所有未使用的空間並對分區數據文件進行碎片整理。
我試了兩次,並觀察到有時「重建」發生得更快,有時「優化」。我運行這些命令的每個分區都有從數百萬到數十億的記錄。我知道MySQL在每條語句上面做了什麼。
是否需要根據分區中的行數應用它們?如果是這樣,我可以使用「優化」多少行,以及我應該使用「重建」多少行?
另外,哪個更好用?
嘿瑞克!感謝您的回答。但那不是我正在尋找的那個。我提到了你的博客文章,它只關注RANGE分區。我的表是LIST分區。也許我應該在我的問題中指出這一點。它們是MyISAM存儲引擎。我需要知道應對我的方案應用哪種維護策略。我在單獨的分區上運行ALTER ... REBUILD/OPTIMIZE。我需要知道REBUILD和OPTIMIZE是否應該根據分區中的行數完成,哪些更快完成......:) –
'LIST' _might_有用,如果它有點像'RANGE'使用。 ('HASH'可能永遠都是無用的)。至於'REBUILD' /'OPTIMIZE' - 這兩者(在MyISAM上做的事情基本相同) - 複製數據並重建索引。因此,它們很可能會等量的時間。 –
謝謝里克:) –