MySQL 依序使用以下路徑作為臨時檔案目錄:
TMPDIR 指定的路徑。/tmp、/var/tmp 或 /usr/tmp。--tmpdir 可覆蓋上述設定,指定擁有足夠空間的目錄。--tmpdir 支援多路徑列表,以輪循方式分散 I/O 負載:
:/path1:/path2;C:\path1;D:\path2關鍵建議:各路徑應位於不同物理磁碟,而非同磁碟不同分區,才能真正分散負載。
若 MySQL 作為複制從庫,嚴禁將 --tmpdir 指向記憶體檔案系統(如 tmpfs)或重啟會清空的目錄。因為複制過程需保留臨時表與 LOAD DATA INFILE 產生的臨時檔案,重啟丟失會導致複制中斷失敗。
MySQL 以隱含(unlink)方式建立臨時檔案:檔案建立後立即從目錄項移除,僅由進程持有檔案描述符。優點:進程異常終止時,OS 自動回收空間。缺點:無法透過 ls 看到佔用空間的大型臨時檔案。
ORDER BY 或 GROUP BY 時,最大磁碟需求:
(排序行長度 + 行指標大小) * 匹配行數 * 2
行指標通常 4 位元組,大表未來可能增加。
SELECT 查詢會建立命名為 SQL_* 的臨時 SQL 表(非隱含)。ALTER TABLE 在原表目錄下建立臨時表。