L'espace caché de MySQL est implémenté via la définition de la variable d'environnement TMPDIR. Si TMPDIR n'est pas défini, MySQL utilisera la valeur par défaut du système, généralement /tmp, /var/tmp ou /usr/tmp. MySQL utilise la valeur de la variable d'environnement TMPDIR comme nom de chemin du répertoire où les fichiers temporaires sont enregistrés. Si TMPDIR n'est pas défini, MySQL utilisera la valeur par défaut du système, généralement /tmp, /var/tmp ou /usr/tmp. Si le système de fichiers contenant le répertoire de fichiers temporaires est trop petit, vous pouvez utiliser l'option "-tmpdir" de mysqld pour spécifier un répertoire dans le système de fichiers avec suffisamment d'espace.
Dans MySQL 5.1, l'option "-tmpdir" peut être définie sur une liste de plusieurs chemins, utilisés de manière circulaire. Sur les plateformes Unix, les chemins sont séparés par le caractère deux-points : ; sur les plateformes Windows, NetWare et OS/2, les chemins sont séparés par le caractère point-virgule « ; ». Notez que pour répartir efficacement la charge, ces chemins doivent se trouver sur des disques physiques différents plutôt que sur des partitions différentes du même disque.
Si le serveur MySQL est utilisé comme esclave de réplication, "--tmpdir" ne doit pas être défini pour pointer vers un répertoire sur un système de fichiers basé sur la mémoire ou un répertoire qui sera effacé au redémarrage de l'hôte du serveur. Pour les serveurs esclaves de réplication, certains fichiers temporaires doivent être conservés au redémarrage de la machine afin que les tables temporaires puissent être copiées ou que les opérations LOAD DATA INFILE puissent être effectuées. Si les fichiers du répertoire de fichiers temporaires sont perdus au redémarrage du serveur, la réplication échouera.
MySQL crée implicitement tous les fichiers temporaires. De cette façon, vous pouvez vous assurer que tous les fichiers temporaires seront supprimés à la fin de mysqld. L'inconvénient de l'utilisation de fichiers cachés est que les fichiers temporaires volumineux qui occupent le système de fichiers ne sont pas visibles au même emplacement que le répertoire des fichiers temporaires.
Lors du tri (ORDER BY ou GROUP BY), MySQL utilise généralement 1 ou plusieurs fichiers temporaires. L'espace disque maximum requis est déterminé par l'expression suivante :
(longueur de ce qui est trié + taille de (pointeur de ligne))
* nombre de lignes correspondantes
*2
La taille du "pointeur de ligne" (pointeur de ligne) est généralement de 4 octets, mais à l'avenir, pour les grandes tables, cette valeur pourra être augmentée.
Pour certaines requêtes SELECT, MySQL crée également des tables SQL temporaires. Ce ne sont pas des tables masquées et portent des noms de la forme SQL_*.
ALTER TABLE crée une table temporaire dans le même répertoire que le répertoire de la table d'origine.