MySQL使用环境变量TMPDIR的值作为保存临时文件的目录的路径名如果未设置TMPDIRMySQL将使用系统的默认值通常为/tmp/var/tmp或/usr/tmp如果包含临时文件目录的文件系统过小可对mysqld使用—tmpdir选项在具有足够空间的文件系统内指定个目录
在MySQL 中—tmpdir选项可被设置为数个路径的列表以循环方式使用在Unix平台上路径用冒号字符:隔开在WindowsNetWare和OS/平台上路径用分号字符;隔开注意为了有效分布负载这些路径应位于不同的物理磁盘上而不是位于相同磁盘的不同分区中
如果MySQL服务器正作为复制从服务器使用不应将tmpdir设置为指向基于内存的文件系统的目录或当服务器主机重启时将清空的目录对于复制从服务器需要在机器重启时仍保留一些临时文件以便能够复制临时表或执行LOAD DATA INFILE操作如果在服务器重启时丢失了临时文件目录下的文件复制将失败
MySQL会以隐含方式创建所有的临时文件这样就能确保中止mysqld时会删除所有临时文件使用隐含文件的缺点在于在临时文件目录所在的位置中看不到占用了文件系统的大临时文件
进行排序时(ORDER BY或GROUP BY)MySQL通常会使用个或多个临时文件所需的最大磁盘空间由下述表达式决定
(length of what is sorted + sizeof(row pointer))
* number of matched rows
*
row pointer(行指针)的大小通常是字节
但在以后对于大的表该值可能会增加
对于某些SELECT查询MySQL还会创建临时SQL表它们不是隐含表并具有SQL_*形式的名称
ALTER TABLE会在与原始表目录相同的目录下创建临时表