您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關MySQL5.7中如何進行數據碎片整理,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
對于innodb存儲引擎,例如刪除一行,這些行只是標記為“已刪除”,而不是真正從索引中物理刪除了,因而空間也沒有真正得到釋放。Innodb的Purge線程會異步的來清理這些沒有用的索引鍵和行,但是依然沒有把這些釋放出來的空間給系統用,因而會導致頁面中存在很多空洞。
MySQL5.7之前的版本中,需要使用OPTIMIZE TABLE或者ALTER TABLE TABLE_NAME ENGINE=InnoDB(比如為獨立表空間),改方法相當于新建一個表,進行一次導出/導入,然后刪除舊表。
MySQL5.7版本中,合并了Facebook的碎片整理代碼,需要把下面的配置加到my.cnf配置文件中:
[mysqld]
innodb_defragment=1
#打開或者關閉InnoDB碎片整理算法。
innodb_defragment_n_pages=16
#一次性讀取多少個頁面進行合并整理操作。范圍是2-32,默認值是7
這樣配置之后,新的碎片整理功能就會替代原有的OPTIMIZE TABLE算法,加快了碎片整理的時間,也不會有新的表生成。
以下是狀態參數說明:
Innodb_defragment_compression_failures:整理碎片時候重新壓縮頁面失敗的次數
Innodb_defragment_failures:整理操作失敗的次數(如果有可壓縮的頁面)
Innodb_defragment_count:整理操作的次數
以上就是MySQL5.7中如何進行數據碎片整理,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。