天天看點

MYSQL 5.7中臨時檔案的使用

使用臨時檔案

一、使用tmpdir

1、執行計劃file sort    檔案名字MY開頭

lsof|grep delete

如:/tmp/MYdRH1GW (deleted)

2、大事物binary log緩存 檔案名字ML開頭

如:/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);

/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-ib59-867962583.ibd

但是涉及到排序比如add key 則使用tmpdir或者innodb_tmpdir見上

MYSQL 5.7中臨時檔案的使用