Скрытое пространство MySQL реализуется посредством установки переменной среды TMPDIR. Если TMPDIR не установлен, MySQL будет использовать системное значение по умолчанию, обычно /tmp, /var/tmp или /usr/tmp. MySQL использует значение переменной среды TMPDIR в качестве пути к каталогу, в котором сохраняются временные файлы. Если TMPDIR не установлен, MySQL будет использовать системное значение по умолчанию, обычно /tmp, /var/tmp или /usr/tmp. Если файловая система, содержащая каталог временных файлов, слишком мала, вы можете использовать опцию «-tmpdir» в mysqld, чтобы указать каталог в файловой системе с достаточным пространством.
В MySQL 5.1 опция «-tmpdir» может быть установлена в список из нескольких путей, используемых в циклическом режиме. На платформах Unix пути разделяются двоеточием ":"; на платформах Windows, NetWare и OS/2 пути разделяются точкой с запятой ";". Обратите внимание: для эффективного распределения нагрузки эти пути должны находиться на разных физических дисках, а не в разных разделах одного и того же диска.
Если сервер MySQL используется в качестве подчиненного устройства репликации, параметр --tmpdir не должен указывать на каталог в файловой системе, основанной на памяти, или на каталог, который будет очищен при перезапуске хоста сервера. Для подчиненных серверов репликации некоторые временные файлы необходимо сохранять при перезапуске компьютера, чтобы можно было копировать временные таблицы или выполнять операции LOAD DATA INFILE. Если файлы в каталоге временных файлов будут потеряны при перезапуске сервера, репликация завершится неудачно.
MySQL неявно создает все временные файлы. Таким образом, вы можете быть уверены, что все временные файлы будут удалены при завершении работы mysqld. Недостаток использования скрытых файлов заключается в том, что большие временные файлы, занимающие файловую систему, не видны в том же месте, где находится каталог временных файлов.
При сортировке (ORDER BY или GROUP BY) MySQL обычно использует один или несколько временных файлов. Максимально необходимое дисковое пространство определяется следующим выражением:
(длина отсортированного + sizeof (указатель строки))
* количество совпадающих строк
*2
Размер «указателя строки» (указателя строки) обычно составляет 4 байта, но в дальнейшем для больших таблиц это значение может быть увеличено.
Для некоторых запросов SELECT MySQL также создает временные таблицы SQL. Они не являются скрытыми таблицами и имеют имена вида SQL_*.
ALTER TABLE создает временную таблицу в том же каталоге, что и исходный каталог таблицы.