tmpdir 控制什麼?MySQL 執行 ORDER BY、GROUP BY、DISTINCT、UNION、ALTER TABLE、LOAD DATA、建立臨時表等操作時,需將中間結果寫入臨時檔案。tmpdir(環境變數 TMPDIR 或啟動參數 --tmpdir)決定這些檔案的儲存位置。
/tmp、/var/tmp、/usr/tmp;Windows C:\Windows\TEMP--tmpdir=/mnt/ssd/tmp--tmpdir=/path1:/path2:/path3(冒號分隔);Windows --tmpdir=D:\tmp;E:\tmp(分號分隔)最大磁碟空間 ≈ (排序行長度 + 行指標 4B) × 匹配行數 × 2
The table ... is full 錯誤unlink() 開啟後立即刪除目錄項,僅保留檔案描述符ls -l 看不見大檔案lsof -p mysqld_pid | grep tmp 觀察開啟的臨時檔LOAD DATA INFILE 中間檔以支援重啟後繼續複製tmpdir 指向持久化磁碟(SSD 最佳)舊版:與原表同目錄建立臨時表 → 同磁碟 I/O 競爭。
新版(5.6+):可設定 innodb_tmpdir 將 InnoDB 臨時表導向獨立磁碟。
Created_tmp_disk_tables / Created_tmp_tables 比率 > 10% → 需調大 tmp_table_size/max_heap_table_size 或優化 SQLdf -h tmpdir 掛載點tmpdir 看似不起眼,實則關係到大查詢能否跑完、從庫能否存活。獨立高速磁碟(NVMe SSD)、多路徑分佈、持久化、監控告警 四字訣,守住 MySQL 臨時空間生命線。