El espacio oculto de MySQL se implementa mediante la configuración de la variable de entorno TMPDIR. Si TMPDIR no está configurado, MySQL usará el valor predeterminado del sistema, generalmente /tmp, /var/tmp o /usr/tmp. MySQL utiliza el valor de la variable de entorno TMPDIR como nombre de ruta del directorio donde se guardan los archivos temporales. Si TMPDIR no está configurado, MySQL usará el valor predeterminado del sistema, generalmente /tmp, /var/tmp o /usr/tmp. Si el sistema de archivos que contiene el directorio de archivos temporal es demasiado pequeño, puede usar la opción "-tmpdir" de mysqld para especificar un directorio en el sistema de archivos con suficiente espacio.
En MySQL 5.1, la opción "-tmpdir" se puede configurar en una lista de varias rutas, utilizadas en forma circular. En las plataformas Unix, las rutas están separadas por el carácter de dos puntos ":"; en las plataformas Windows, NetWare y OS/2, las rutas están separadas por el carácter de punto y coma ";". Tenga en cuenta que para distribuir la carga de manera efectiva, estas rutas deben estar en diferentes discos físicos en lugar de en diferentes particiones del mismo disco.
Si el servidor MySQL se utiliza como esclavo de replicación, "--tmpdir" no debe configurarse para que apunte a un directorio en un sistema de archivos basado en memoria o un directorio que se borrará cuando se reinicie el host del servidor. Para los servidores esclavos de replicación, es necesario conservar algunos archivos temporales cuando se reinicia la máquina para poder copiar tablas temporales o realizar operaciones LOAD DATA INFILE. Si los archivos del directorio de archivos temporales se pierden cuando se reinicia el servidor, la replicación fallará.
MySQL crea todos los archivos temporales implícitamente. De esta manera, puede asegurarse de que todos los archivos temporales se eliminarán cuando finalice mysqld. La desventaja de utilizar archivos ocultos es que los archivos temporales grandes que ocupan el sistema de archivos no son visibles en la misma ubicación que el directorio de archivos temporales.
Al ordenar (ORDER BY o GROUP BY), MySQL generalmente usa 1 o más archivos temporales. El espacio máximo en disco requerido está determinado por la siguiente expresión:
(longitud de lo que está ordenado + tamaño de (puntero de fila))
* número de filas coincidentes
*2
El tamaño del "puntero de fila" (puntero de fila) suele ser de 4 bytes, pero en el futuro, para tablas grandes, este valor puede aumentarse.
Para algunas consultas SELECT, MySQL también crea tablas SQL temporales. No son tablas ocultas y tienen nombres con el formato SQL_*.
ALTER TABLE crea una tabla temporal en el mismo directorio que el directorio de la tabla original.