商量Mysql中OPTIMIZE TABLE的感化詳解。本站提示廣大學習愛好者:(商量Mysql中OPTIMIZE TABLE的感化詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是商量Mysql中OPTIMIZE TABLE的感化詳解正文
當您的庫中刪除年夜量的數據後,您能夠會發明數據文件尺寸並沒有減小。這是由於刪 除操作後在數據文件中留下碎片而至。Discuz! 在體系數設置界面供給了數據表優化的功效,可以去除刪除操作後留下的數據文件碎片,減小文件尺寸,加速將來的讀寫操作。您只需在做完批量刪除,或按期(如 每兩個月)停止一次數據表優化操作便可。
OPTIMIZE TABLE經由過程制造本來的表的一個暫時正本來任務
OPTIMIZE TABLE語法
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表起感化。
關於MyISAM表,OPTIMIZE TABLE按以下方法操作:
1. 假如表曾經刪除或分化了行,則修復表。
2. 假如未對索引頁停止分類,則停止分類。
3. 假如表的統計數據沒有更新(而且經由過程對索引停止分類不克不及完成修復),則停止更新。
關於BDB表,OPTIMIZE TABLE今朝被映照到ANALYZE TABLE上。關於InnoDB表,OPTIMIZE TABLE被映照到ALTER TABLE上,這會重建表。重建操作能更新索引統計數據並釋放成簇索引中的未應用的空間。請拜見13.5.2.1節,“ANALYZE TABLE語法”。
應用—skip-new或—safe-mode選項可以啟動mysqld。經由過程啟動mysqld,您可使OPTIMIZE TABLE對其它表類型起感化。
留意,在OPTIMIZE TABLE運轉進程中,MySQL會鎖定表。
OPTIMIZE TABLE語句被寫入到二進制日記中,除非應用了自選的NO_WRITE_TO_BINLOG症結詞(或其別號LOCAL)。曾經這麼做了,是以,用於 MySQL辦事器的OPTIMIZE TABLE敕令的感化相當於一個復制主辦事器,在默許情形下,這些敕令將被復制到復制附屬辦事器中。