您好,登錄后才能下訂單哦!
undo log回滾日志物理文件空間回收
MySQL5.6之前
undo log在ibdata1文件里,ibdata1文件會越來越大,想要回收,必須全庫導出,刪除data目錄,再重新初始化數據庫,最后把全庫導入,才可實現ibdata1回收。
MySQL5.6
可以把undo log回滾分離到一個單獨的表空間里,但不能回收空間大小。
MySQL5.7
支持在線回收
1、配置文件里指定如下參數,如創建數據以后再指定會報錯。
#存放目錄
innodb_undo_directory=/data2/
#回滾段128k
innodb_undo_logs=128
#指定多個undolog文件
innodb_undo_tablespaces=4
2、undo log從共享表空間里ibdata1拆分出去,在安裝MySQL時,需要在my.cnf里指定,
數據庫啟動再指定,會報錯。
3、參數
innodb_undo_log_truncate參數設置為1,即開啟在線回收undo日志文件,支持動態設置。
innodb_undo_tablespaces參數必須大于或等于2,即回收一個undolog日志時,要保證另一個undo可以使用。
innodb_undo_logs undo回滾段的數量,至少大于等于35,默認為128
innodb_max_undo_log_size(默認1GB)當超過閾值時,會觸發truncate回收動作,truncate后空間縮小到10MB
innodb_purge_rseg_truncate_frequency 控制回收undo log的頻率。undo log空間在它的回滾段沒有得到釋放之前不會收縮,想要增加釋放
回滾的頻率,需要降低innodb_purge_rseg_truncate_frequency的設定值。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。