您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關MySQL5.7回收undo log物理文件空間是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
MySQL的undo log保存在共享表空間ibdata1文件里,隨著業務運轉,ibdata1會越來越大。在MySQL5.7之前的版本,需要停機利用mysqldump將數據導出,然后重建數據庫,再導入數據的方法解決該問題,MySQL5.7提供在線回收的機制。
MySQL5.6版本中,可以把undo log回滾段分離到單獨的一個表空間,但是依然沒有實現回收的機制,用到三個參數
innodb_undo_directory (指定存放的目錄,默認是數據目錄)
innodb_undo_logs=128 (指定回滾段128KB)
innodb_undo_tablespaces=4 (指定有多少個undo log文件)
以下是MySQL5.6版本參數默認設置:
點擊(此處)折疊或打開
mysql> show variables like 'innodb_undo_%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| innodb_undo_directory | . |
| innodb_undo_logs | 128 |
| innodb_undo_tablespaces | 0 |
+-------------------------+-------+
以下是MySQL5.7版本參數默認設置
點擊(此處)折疊或打開
mysql> show variables like 'innodb_undo_%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_undo_directory | ./ |
| innodb_undo_log_truncate | OFF |
| innodb_undo_logs | 128 |
| innodb_undo_tablespaces | 0 |
+--------------------------+-------+
注意:把undo log從共享表空間里分離出去,要在MySQL安裝時候進行設置,把參數配置到my.cnf里邊,MySQL啟動之后再分離會報錯。
MySQL5.7 undo log回收機制涉及到的參數如下:
innodb_undo_log_truncate 參數設置為1,即開始在線回收undo log日志文件,默認是OFF。
innodb_undo_tablespaces參數必須大于或者等于2,回收一個日志文件時候,要保證另一個undo log正常可用。
innodb_undo_logs undo回滾段的數量,至少大于等于35,默認是128.
innodb_max_undo_log_size 超過這個閾值之后進行處罰truncate回收動作,默認是1GB,truncate回收之后變成10MB。
innodb_purge_resg_truncate_grequency 控制回收undo log的頻率,想要增加釋放回滾段的頻率,就得降低innodb_purge_resg_truncate_grequency設定值。
上述就是小編為大家分享的MySQL5.7回收undo log物理文件空間是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。