MySQL verwendet den Wert der Umgebungsvariablen
TMPDIR
als Pfad zu dem Verzeichnis, in dem
die temporären Dateien gespeichert werden. Wenn Sie
TMPDIR
nicht eingestellt haben, benutzt MySQL
den systemeigenen Standardwert, also normalerweise
/tmp
, /var/tmp
oder
/usr/tmp
. Wenn das Dateisystem, in dem Ihr
Verzeichnis für temporäre Dateien liegt, zu klein ist, können
Sie mit der Option --tmpdir
von
mysqld ein anderes Verzeichnis in einem
ausreichend großen Dateisystem einstellen.
In MySQL 5.1 kann die Option
--tmpdir
auf eine Liste mit mehreren Pfaden
eingestellt werden, die dann im Ringverfahren (jeder kommt
einmal dran) benutzt werden. Die Pfade sollten auf Unix durch
Doppelpunkte (‘:
’) getrennt
werden, und auf Windows, NetWare und OS/2 durch Semikola
(‘;
’).
Hinweis: Um die Last
wirkungsvoll zu verteilen, sollten diese Pfade zu verschiedenen
physikalischen Platten und nicht nur zu
verschiedenen Partitionen derselben Festplatte führen.
Wenn der MySQL Server ein Replikationsslave ist, sollten Sie die
Option --tmpdir
nicht auf ein Verzeichnis in
einem arbeitsspeicherbasierten Dateisystem oder auf ein anderes
Verzeichnis einstellen, das beim Neustart des Serverhosts
gelöscht wird. Ein Replikationsslave benötigt einige seiner
temporären Dateien, um einen Neustart des Computers so zu
überleben, dass er temporäre Tabellen oder LOAD DATA
INFILE
-Operationen replizieren kann. Wenn Dateien aus
dem temporären Verzeichnis beim Neustart des Servers verloren
gehen, scheitert die Replikation.
MySQL legt alle temporären Dateien als verborgene Dateien an. Das soll gewährleisten, dass die temporären Dateien beim Herunterfahren von mysqld entfernt werden. Allerdings haben verborgene Dateien den Nachteil, dass eine große temporäre Datei, die das Dateisystem überlastet, in welchem das temporäre Verzeichnis liegt, nicht zu sehen ist.
Bei Sortieroperationen (ORDER BY
oder
GROUP BY
) verwendet MySQL normalerweise ein
oder zwei temporäre Dateien. Wie viel Platz auf der Festplatte
dafür maximal notwendig ist, verrät Ihnen der folgende
Ausdruck:
(Länge der Daten + sizeof(Zeilenzeiger)) * Anzahl der gefundenen Zeilen * 2
Der Zeilenzeiger ist normalerweise 4 Byte groß, kann aber bei sehr großen Tabellen in Zukunft noch wachsen.
Für manche SELECT
-Anfragen legt MySQL
ebenfalls temporäre SQL-Tabellen an. Diese sind nicht verborgen
und haben Namen der Form SQL_*
.
ALTER TABLE
legt eine temporäre Tabelle in
dem Verzeichnis der Originaltabelle an.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.