美国服务器

18.5 MySQL在哪儿存储临时文件

MySQL使用TMPDIR环境变量的值作为存储临时文件的目录的路径名。如果你没有设置TMPDIR,MySQL使用系统缺省值,它通常是“/tmp”或“/usr/tmp”。如果包含你的临时文件目录的文件系统太小,你应该编辑safe_mysqld设定TMPDIR指向你有足够空间的一个文件系统!你也可以使用mysqld的–tmpdir选项目设置临时目录。
MySQL以“隐含文件”创建所有临时文件。这保证了如果mysqld被终止,临时文件也将被删除。使用隐含文件的缺点是你将看不到一个大的临时文件填满了临时文件目录所在的文件系统。
当排序(ORDER BY或GROUP BY)时,MySQL通常使用一个或两个临时文件。最大磁盘空间需求是:
(存储东西的长度 + sizeof (数据库指针))
* 匹配的行数
* 2

sizeof(数据库指针)通常是4,但是在未来对确实很大的表可能增加。
对一些SELECT查询,MySQL也创建临时SQL表。这些没被隐含且有“SQL_*”格式的名字。
ALTER TABLE和OPTIMIZE TABLE在原数据库表的同一个目录中创建一张临时表。