首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 臨時檔案儲存位置完整指南:配置與最佳實踐

     編輯:MySQL 資料庫相關知識

臨時檔案目錄的決定機制

MySQL 依序使用以下路徑作為臨時檔案目錄:

  1. 環境變數 TMPDIR 指定的路徑。
  2. 若未設定,使用系統預設值:通常為 /tmp、/var/tmp 或 /usr/tmp。
  3. 啟動參數 --tmpdir 可覆蓋上述設定,指定擁有足夠空間的目錄。

MySQL 5.1+ 多路徑輪循機制

--tmpdir 支援多路徑列表,以輪循方式分散 I/O 負載:

  • Unix:冒號分隔 :/path1:/path2
  • Windows/NetWare/OS/2:分號分隔 ;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 在原表目錄下建立臨時表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved