1. 程式人生 > >關於mysql 刪除數據後(.MYD,MYI)物理空間未釋放

關於mysql 刪除數據後(.MYD,MYI)物理空間未釋放

使用 表優化 數據 lob 大量 cal 定期 blob 特定

關於mysql 刪除數據後物理空間未釋放 OPTIMIZE TABLE 當您的庫中刪除了大量的數據後,您可能會發現數據文件尺寸並沒有減小。這是因為刪除操作後在數據文件中留下碎片所致。OPTIMIZE TABLE 是指對表進行優化。如果已經刪除了表的一大部分數據,或者如果已經對含有可變長度行的表(含有 VARCHAR 、 BLOB 或 TEXT 列的表)進行了很多更改,就應該使用 OPTIMIZE TABLE 命令來進行表優化。這個命令可以將表中的空間碎片進行合並,並且可以消除由於刪除或者更新造成的空間浪費 。OPTIMIZE TABLE 命令只對 MyISAM 、 BDB 和 InnoDB 表起作用 。

表優化的工作可以每周或者每月定期執行,對提高表的訪問效率有一定的好處,但是需要註意的是,優化表期間會鎖定表,所以一定要安排在空閑時段進行。

手冊中關於OPTIMIZE的一些用法和描述

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

如果您已經刪除了表的一大部分,或者如果您已經對含有可變長度行的表(含有VARCHAR, BLOB或TEXT列的表)進行了很多更改,則應使用 OPTIMIZE TABLE。被刪除的記錄被保持在鏈接清單中,後續的INSERT操作會重新使用舊的記錄位置。您可以使用OPTIMIZE TABLE來重新 利用未使用的空間,並整理數據文件的碎片。 在多數的設置中,您根本不需要運行OPTIMIZE TABLE。即使您對可變長度的行進行了大量的更新,您也不需要經常運行,每周一次或每月一次 即可,只對特定的表運行。 OPTIMIZE TABLE只對MyISAM, BDB和InnoDB表起作用。 註意,在OPTIMIZE TABLE運行過程中,MySQL會鎖定表。

關於mysql 刪除數據後(.MYD,MYI)物理空間未釋放