-
MySQL的隱藏空間透過環境變數TMPDIR的設定實現。如果未設定TMPDIR,MySQL將使用系統的預設值,通常為/tmp、/var/tmp或/usr/tmp。 MySQL使用環境變數TMPDIR的值作為保存暫存檔案的目錄的路徑名。如果未設定TMPDIR,MySQL將使用系統的預設值,通常為/tmp、/var/tmp或/usr/tmp。如果包含暫存檔案目錄的檔案系統太小,可對mysqld使用「—tmpdir」選項,在具有足夠空間的檔案系統內指定1個目錄。
在MySQL 5.1中,「—tmpdir」選項可被設定為數個路徑的列表,以循環方式使用。在Unix平台上,路徑以冒號字元「:」隔開,在Windows、NetWare和OS/2平台上,路徑以分號字元「;」隔開。注意,為了有效分佈負載,這些路徑應位於不同的實體磁碟上,而不是位於相同磁碟的不同分割區中。
如果MySQL伺服器正作為複製從伺服器使用,不應將「--tmpdir」設定為指向基於記憶體的檔案系統的目錄,或當伺服器主機重新啟動時將清空的目錄。對於複製從伺服器,需要在機器重新啟動時仍保留一些臨時文件,以便能夠複製臨時表或執行LOAD DATA INFILE操作。如果在伺服器重新啟動時遺失了暫存文件目錄下的文件,複製將會失敗。
MySQL會以隱含方式建立所有的臨時檔案。這樣,就能確保中止mysqld時會刪除所有暫存檔案。使用隱含檔案的缺點在於,在暫存檔案目錄所在的位置中,看不到佔用了檔案系統的大臨時檔案。
進行排序時(ORDER BY或GROUP BY),MySQL通常會使用1個或多個暫存檔案。所需的最大磁碟空間由下述表達式決定:
(length of what is sorted + sizeof(row pointer))
* number of matched rows
* 2
「row pointer」(行指標)的大小通常是4字節,但在以後,對於大的表,該值可能會增加。
對於某些SELECT查詢,MySQL也會建立臨時SQL表。它們不是隱含表,並具有SQL_*形式的名稱。
ALTER TABLE會在與原始表目錄相同的目錄下建立暫存表。