文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  MySQL 儲存暫存檔的位置

B.3.3.5 MySQL 儲存暫存檔的位置

在 Unix 上,MySQL 使用 TMPDIR 環境變數的值作為儲存暫存檔的目錄路徑名稱。如果未設定 TMPDIR,MySQL 會使用系統預設值,通常是 /tmp/var/tmp/usr/tmp

在 Windows 上,MySQL 會依序檢查 TMPDIRTEMPTMP 環境變數的值。對於第一個找到已設定的變數,MySQL 會使用它,而不會檢查其餘的變數。如果未設定 TMPDIRTEMPTMP,MySQL 會使用 Windows 系統預設值,通常是 C:\windows\temp\

如果包含暫存檔目錄的檔案系統太小,您可以使用 mysqld --tmpdir 選項來指定檔案系統中有足夠空間的目錄。

--tmpdir 選項可以設定為以循環方式使用的多個路徑清單。路徑在 Unix 上應以冒號字元 (:) 分隔,在 Windows 上應以分號字元 (;) 分隔。

注意

為了有效地分散負載,這些路徑應位於不同的實體磁碟上,而不是位於同一磁碟的不同分割區上。

如果 MySQL 伺服器充當複本,您可以設定系統變數 replica_load_tmpdir,以指定在複製 LOAD DATA 陳述式時用於保存暫存檔的單獨目錄。此目錄應位於基於磁碟的檔案系統(而不是基於記憶體的檔案系統)中,以便用於複製 LOAD DATA 的暫存檔可以在機器重新啟動後存留。此目錄也不應是作業系統在系統啟動過程中清除的目錄。但是,如果暫存檔已移除,複製現在可以在重新啟動後繼續進行。

MySQL 會安排在 mysqld 終止時移除暫存檔。在支援此功能的平台(例如 Unix)上,這是透過在開啟檔案後取消連結檔案來完成的。這樣做的缺點是名稱不會出現在目錄清單中,而且您不會看到一個巨大的暫存檔填滿暫存檔目錄所在的檔案系統。(在這種情況下,lsof +L1 可能有助於識別與 mysqld 相關聯的大型檔案。)

在排序 (ORDER BYGROUP BY) 時,MySQL 通常會使用一或兩個暫存檔。所需的最大磁碟空間由以下公式決定

(length of what is sorted + sizeof(row pointer))
* number of matched rows
* 2

列指標大小通常為四個位元組,但對於非常大的表格,未來可能會增加。

對於某些陳述式,MySQL 會建立非隱藏的暫存 SQL 表格,其名稱以 #sql 開頭。

某些 SELECT 查詢會建立暫存 SQL 表格來保存中間結果。

使用 ALGORITHM=INPLACE 技術不會線上執行的重建表格的 DDL 作業會在與原始表格相同的目錄中建立原始表格的暫存副本。

線上 DDL 作業可能會使用暫存記錄檔來記錄並行 DML、建立索引時的暫存排序檔,以及重建表格時的暫存中間表格檔案。如需更多資訊,請參閱 第 17.12.3 節,「線上 DDL 空間需求」

InnoDB 使用者建立的暫存表格和磁碟上的內部暫存表格是在 MySQL 資料目錄中名為 ibtmp1 的暫存表格空間檔案中建立的。如需更多資訊,請參閱 第 17.6.3.5 節,「暫存表格空間」

另請參閱 第 17.15.7 節,「InnoDB INFORMATION_SCHEMA 暫存表格資訊表格」

選用的 EXTENDED 修飾詞會使 SHOW TABLES 列出因失敗的 ALTER TABLE 陳述式而建立的隱藏表格。請參閱 第 15.7.7.38 節,「SHOW TABLES 陳述式」