MYSQL 5.7中臨時檔案的使用

gaopengtttt發表於2017-10-25
使用臨時檔案
一、使用tmpdir
1、執行計劃file sort    檔名字MY開頭
lsof|grep delete
如:/tmp/MYdRH1GW (deleted)


2、大事物binary log快取 檔名字ML開頭
lsof|grep delete
如:/tmp/MLq9INFu (deleted)


3、壓縮的tempory table  
CREATE TEMPORARY TABLE tmp_table1(id int) ROW_FORMAT=COMPRESSED ;
ls /tmp/
如:
#sql6b82_6_7.frm
#sql6b82_6_7.ibd


4、online DDL 涉及排序比如add key
alter table testsort add key(id);
lsof|grep delete
如:
/tmp/ibCxlYQg (deleted)
/tmp/ib51nvZ1 (deleted)
設定 innodb_tmpdir可以將這類檔案放到指定的目錄




二、使用innodb_temp_data_file_path
1、執行計劃use temporay table 5.7以後為innodb 內部表
2、非壓縮tempory table  
CREATE TEMPORARY TABLE tmp_table1(id int);
可以使用 select * from INNODB_TEMP_TABLE_INFO  ;查詢
這些也看不到 表現為innodb表


三、使用innodb data 
就是online ddl 
1、ALGORITHM copy 名字為 #sql-
  alter table testsort ALGORITHM=copy ,add  im int  ;
#sql-6b82_6.frm
#sql-6b82_6.ibd


2、ALGORITHM inplace 名字為 #sql-ib 
  alter table test add key id int
比如
#sql-6b82_6.frm
#sql-ib59-867962583.ibd
但是涉及到排序比如add key 則使用tmpdir或者innodb_tmpdir見上

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2146356/,如需轉載,請註明出處,否則將追究法律責任。

相關文章