Der verborgene Speicherplatz von MySQL wird durch die Einstellung der Umgebungsvariablen TMPDIR implementiert. Wenn TMPDIR nicht festgelegt ist, verwendet MySQL den Standardwert des Systems, normalerweise /tmp, /var/tmp oder /usr/tmp. MySQL verwendet den Wert der Umgebungsvariablen TMPDIR als Pfadnamen des Verzeichnisses, in dem temporäre Dateien gespeichert werden. Wenn TMPDIR nicht festgelegt ist, verwendet MySQL den Standardwert des Systems, normalerweise /tmp, /var/tmp oder /usr/tmp. Wenn das Dateisystem, das das temporäre Dateiverzeichnis enthält, zu klein ist, können Sie mit der Option „-tmpdir“ von mysqld ein Verzeichnis im Dateisystem mit ausreichend Speicherplatz angeben.
In MySQL 5.1 kann die Option „-tmpdir“ auf eine Liste mehrerer Pfade gesetzt werden, die im Round-Robin-Verfahren verwendet werden. Auf Unix-Plattformen werden Pfade durch das Doppelpunktzeichen „:“ getrennt. Auf Windows-, NetWare- und OS/2-Plattformen werden Pfade durch das Semikolonzeichen „;“ getrennt. Beachten Sie, dass sich diese Pfade zur effektiven Lastverteilung auf verschiedenen physischen Festplatten und nicht in verschiedenen Partitionen derselben Festplatte befinden sollten.
Wenn der MySQL-Server als Replikationsslave verwendet wird, sollte „--tmpdir“ nicht so eingestellt werden, dass es auf ein Verzeichnis in einem speicherbasierten Dateisystem oder ein Verzeichnis verweist, das beim Neustart des Server-Hosts gelöscht wird. Bei Replikations-Slave-Servern müssen einige temporäre Dateien beibehalten werden, wenn die Maschine neu gestartet wird, damit temporäre Tabellen kopiert oder LOAD DATA INFILE-Vorgänge ausgeführt werden können. Wenn beim Neustart des Servers Dateien im temporären Dateiverzeichnis verloren gehen, schlägt die Replikation fehl.
MySQL erstellt alle temporären Dateien implizit. Auf diese Weise können Sie sicherstellen, dass alle temporären Dateien gelöscht werden, wenn mysqld beendet wird. Der Nachteil der Verwendung versteckter Dateien besteht darin, dass die großen temporären Dateien, die das Dateisystem belegen, nicht am selben Speicherort wie das Verzeichnis der temporären Dateien sichtbar sind.
Beim Sortieren (ORDER BY oder GROUP BY) verwendet MySQL normalerweise eine oder mehrere temporäre Dateien. Der maximal erforderliche Speicherplatz wird durch den folgenden Ausdruck bestimmt:
(Länge dessen, was sortiert wird + sizeof(Zeilenzeiger))
* Anzahl übereinstimmender Zeilen
*2
Die Größe des „Zeilenzeigers“ (Zeilenzeiger) beträgt normalerweise 4 Byte, bei großen Tabellen kann dieser Wert jedoch in Zukunft erhöht werden.
Für einige SELECT-Abfragen erstellt MySQL auch temporäre SQL-Tabellen. Sie sind keine versteckten Tabellen und haben Namen in der Form SQL_*.
ALTER TABLE erstellt eine temporäre Tabelle im selben Verzeichnis wie das ursprüngliche Tabellenverzeichnis.