MySQL中optimize最佳化表

來源:互聯網
上載者:User

標籤:

前言

當對MySQL進行大量的增刪改操作的時候,很容易產生一些片段,這些片段佔據著空間,所以可能會出現刪除很多資料後,資料檔案大小變化不大的現象。當然新插入的資料仍然會利用這些片段。但過多的片段,對資料的插入操作是有一定影響的,此時,我們可以通過optimize來對錶的最佳化。
為了更加直觀的看到資料片段,Mysql可以使用如下命令查看
show table status [like table_name]


data_free選項代表資料片段。
針對MySQL的不同資料庫儲存引擎,在optimize使用清除片段,回收閑置的資料庫空間,把分散儲存(fragmented)的資料和索引重新挪到一起(defragmentation),對I/O速度有好處。
當然optimize在對錶進行操作的時候,會加鎖,所以不宜經常在程式中調用。

MyISAM儲存引擎

針對MyISAM表,直接使用如下命令進行最佳化
optimize table table1[,table2][,table3]
如果同時最佳化多個表可以使用逗號分隔。
下面最佳化dede_member_vhistory表,可以看出,最佳化後data_free值為0。

#InnoDB儲存引擎
InnoDB引擎的表分為獨享資料表空間和同享資料表空間的表,我們可以通過show variables like ‘innodb_file_per_table’;來查看是否開啟獨享資料表空間。

我本地是開啟了獨享資料表空間的。此時是無法對錶進行optimize操作的,如果操作,會返回資訊,最後的一條Table does not support optimize, doing recreate + analyze instead。因為該結構下刪除了大量的行,此時索引會重組並且會釋放相應的空間因此不必最佳化。

MySQL中optimize最佳化表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.