MySQL 運行過程中大量使用臨時文件 (排序、臨時表、ALTER TABLE 等),其存儲路徑、空間估算、生命周期管理直接影響穩定性。本文系統梳理 5.1 版本相關機制。
TMPDIR (Unix) / TMP/TEMP (Windows)。--tmpdir=path 覆蓋環境變量。/tmp、/var/tmp、/usr/tmp。--tmpdir 支援多路徑列表:
/disk1/tmp:/disk2/tmp:/disk3/tmpD:\tmp;E:\tmp關鍵要求: 路徑必須位於不同物理磁盤,而非同磁盤不同分區,才能真實分發 I/O 負載。
嚴禁將 --tmpdir 指向內存文件系統 (tmpfs) 或重啟清空目錄。 從庫需在重啟後保留臨時文件以完成臨時表復制或 LOAD DATA INFILE 操作,否則復制中斷。
MySQL 以隱含方式創建臨時文件 (打開後立即 unlink),確保進程異常退出時自動清理。缺點:文件系統層面 不可見大臨時文件佔用,排查磁盤滿需依賴 lsof 或監控工具。
(排序行長度 + 行指針大小) * 匹配行數 * 2
行指針通常 4 字節,大表未來可能增大
實戰建議: 大表 ORDER BY/GROUP BY 前預估空間,必要時調大 --tmpdir 指向大分區。
#sql_*,隱藏文件。SELECT 創建,命名 SQL_*,可見。#sql-*.ibd),非 --tmpdir 控制。臨時空間管理是 MySQL 穩定運行的隱形基石。多磁盤 --tmpdir、從庫持久化目錄、排序空間預估、隱藏文件監控——四大要素納入運維體檢清單,可有效規避「磁盤寫滿導致服務雪崩」風險。