共計 1961 個字符,預計需要花費 5 分鐘才能閱讀完成。
這期內容當中丸趣 TV 小編將會給大家帶來有關 ibdata1 共享表空間文件一直增加的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
數據庫磁盤使用率一直上升,其中 ibdata1 使用有 323G,并且一直增加持續了 31 天
1、首先看了實例 innodb_file_per_table 是開啟的
2、5.6 版本 undo 信息
show variables like %undo%
1 innodb_undo_directory .
2 innodb_undo_logs 128
3 innodb_undo_tablespaces 0
那么 ibdata1 文件增大的原因有如下因素:
InnoDB 引擎表由于支持多版本并發控制(MVCC),因此會將查詢所需的 Undo 信息保存在系統文件 ibdata1 中。
如果存在對一個 InnoDB 表長時間不結束的查詢,而且在查詢過程中表有大量的數據變化,
則會生成大量的 Undo 信息,導致 ibdata1 文件尺寸增加。
由于 MySQL 內部機制的限制,ibdata1 文件目前是不支持收縮的。
因此出現這樣的情況,只能通過切換主備,或者遷移,再或者增大存儲空間解決。
建議:監控和清理執行時間過長的會話或事務。
那么今天的例子大致如下:
通過 show processlist 看到一個 sql 執行了 31 天,并且還處于 query,Sending data 狀態,SQL 本身三個表關聯,沒有關聯條件,后面 kill 掉此 sql,通過切換實例,新備重新搭建
1.2 數據文件
對于數據文件占用空間高的情況,可以通過清理數據的方式來減少空間占用情況,比如通過 drop table 和 truncate table 來清理不再需要的數據。
說明 3 個常見問題:
1.2.1 information_schema.tables 查詢的數據容量
information_schema.tables 提供的是根據采樣獲取的表的部分統計信息,因此通過下面的查詢獲取的表、庫數據尺寸和實際數據文件占用尺寸間會有出入(通常要小于實際數據文件占用空間)
select table_name, concat(round((data_length + index_length)/1024/1024,2), MB ) from
information_schema.tables where
table_schema = TESTDB and table_name = TESTTABLE
下圖中可以看到:在收集表的統計信息前后反饋出的表數據量大小存在差異。
注:即使通過 analyze table 命令,重新收集統計信息,得到的數值通常也小于實際數據文件占用空間;比如本例的 16143 MB 也小于該表的數據文件實際占用空間。
由于數據文件在頻繁的 DML 后會出現數據空洞的現象,比較接近實際數據文件占用空間的計算方法請參考:
select
sum(data_length + index_length + data_free) / 1024 / 1024from
information_schema.tables;
注:
因為 information_schema.tables 中提供的是采樣統計數據,因此該計算方式在統計數據比較接近實際的情況下,才會比較接近真實空間占用情況。
1.2.2 delete 刪除數據
delete 操作不能夠直接回收被刪除數據占用的數據文件空間,這就好比排空泳池中水但泳池的占地面積不會發生改變一樣。而且 delete 操作會生成相應的 Binlog 文件,會進一步惡化空間使用情況。在 delete 操作刪除數據后,需要通過 optimize table tab_name; 操作來回收空間。
1.2.3 刪除備份
自建 MySQL 可能存在備份占用空間的問題,但是云上 RDS 備份放置在后臺 OSS 上,不占用用戶的 RDS 實例空間,因此刪除備份不能解決實例的空間問題。而且刪除備份會影響實例的可恢復性,強烈建議任何情況下不要考慮刪除備份。
1.3 臨時文件
臨時文件會隨查詢的結束或者會話的終止而自動釋放,因此如果是臨時文件導致實例空間滿而鎖定,可以通過終止會話來釋放空間。
遇見過一個案例,客戶排序操作導致 ibtmp1 很大,占用空間很高,需要釋放,那么只能重啟,也是切換成備庫,然后重啟新的備釋放掉了
ib_logfile 日志文件:
ib_logfile0 和 ib_logfile1 日志文件保存 InnoDB 引擎表的事務日志信息,其文件大小尺寸固定,不可以改變。較大的尺寸在高并發事務的場景下有利于減少事務日志文件切換的次數,提高實例性能。
上述就是丸趣 TV 小編為大家分享的 ibdata1 共享表空間文件一直增加的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。