MySQL Innodb--共享臨時表空間和臨時文件


 在MySQL 5.7版本中引入Online DDL特性和共享臨時表空間特性,臨時數據主要存放形式為:

1、DML命令執行過程中文件排序(file sore)操作生成的臨時文件,存儲目錄由參數tmpdir控制,以MY開頭
2、超大事務提交生成binary log過程中用於數據緩存的臨時文件,存儲目錄由參數tmpdir控制,以ML開頭
3、使用ROW_FORMAT=COMPRESSED創建的壓縮InnoDB臨時表,存儲目錄由參數tmpdir控制,以frm和idb結尾
4、沒用ROW_FORMAT=COMPRESSED創建的非壓縮壓縮InnoDB臨時表,存儲在由參數innodb_temp_data_file_path指定的共享臨時文件中
5、使用COPY模式的Onine DDL創建的臨時文件,存儲在操作表相同目錄下,以sql-開頭,以frm和idb結尾
6、使用INPLACE模式的Onine DDL創建的臨時文件,存儲在操作表相同目錄下,以sql-和sql-ib開頭,以frm和idb結尾
7、Online DDL操作過程中排序操作使用的臨時文件,存儲目錄由參數tmpdir控制,以ib開頭
8、MySQL InnoDB存儲引擎層使用的內部臨時表,存儲在由參數innodb_temp_data_file_path指定的共享臨時文件中

 

MySQL 共享臨時表空間(shared temporary tablespace)
在MySQL 5.7.1版本中引入,將臨時表空間從系統表空間中獨立處理,用來存放:
1、非壓縮InnoDB臨時表(non-compressed InnoDB temporary tables)
2、關系對象(related objects)
3、回滾段(rollback segment)

由於共享臨時表空間主要存放的數據無需參與Crash Recovery,重啟時可以被刪除重建,方便回收空間。
共享臨時表空間由參數innodb_temp_data_file_path控制,默認配置為ibtmp1:12M:autoextend,未指定路徑時存在在innodb_data_home_dir下。

 

使用下面命令能查看MySQL臨時目錄下的文件

lsof |grep '/export/data/mysql/tmp/'

輸出為:

mysqld    22346   mysql    5u      REG               8,17            0   47278234 /export/data/mysql/tmp/ibW1DoSr (deleted)
mysqld    22346   mysql    6u      REG               8,17            0   47278235 /export/data/mysql/tmp/ibAhuhtS (deleted)
mysqld    22346   mysql    7u      REG               8,17            0   47278236 /export/data/mysql/tmp/ibiiHa4i (deleted)
mysqld    22346   mysql    8u      REG               8,17            0   47278237 /export/data/mysql/tmp/ibeje7dX (deleted)
mysqld    22346   mysql   13u      REG               8,17            0   47278238 /export/data/mysql/tmp/ibLORUJC (deleted)
mysqld    22346   mysql 2943u      REG               8,17            0   47278301 /export/data/mysql/tmp/MLVChF9b (deleted)
mysqld    22346   mysql 3785u      REG               8,17            0   47278326 /export/data/mysql/tmp/MLx6V0TO (deleted)
mysqld    22346   mysql 4795u      REG               8,17            0   47278371 /export/data/mysql/tmp/MLz5r2Yv (deleted)
mysqld    22346   mysql 4928u      REG               8,17            0   47278574 /export/data/mysql/tmp/ML7ivmrd (deleted)
mysqld    22346   mysql 5414u      REG               8,17            0   47278653 /export/data/mysql/tmp/MLx4HGxW (deleted)
mysqld    22346   mysql 6105u      REG               8,17            0   47278714 /export/data/mysql/tmp/MLADScmK (deleted)
mysqld    22346   mysql 6314u      REG               8,17            0   47278715 /export/data/mysql/tmp/MLG8aCpz (deleted)
mysqld    22346   mysql 6315u      REG               8,17            0   47278716 /export/data/mysql/tmp/MLJ7MuCo (deleted)

可以看到該目錄下有ML開頭和ib開頭的文件,用來緩存BINLOG和排序結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM