- A+

MySQL 中的临时表路径由系统变量 tmpdir 控制,它决定了 MySQL 存放内部临时表、排序操作、ALTER TABLE 重建过程等产生的临时文件的位置。合理设置该路径可以避免系统盘空间不足,提升性能。
1. 查看当前临时表路径
登录 MySQL 后执行以下命令查看当前配置:
SHOW VARIABLES LIKE 'tmpdir';
返回结果会显示当前生效的临时目录路径,例如:tmpdir /tmp
2. 修改临时表路径的方法
修改 tmpdir 可通过配置文件或启动命令实现,推荐使用配置文件方式。
方法一:修改 MySQL 配置文件(my.cnf 或 my.ini)
在 [mysqld] 段落下添加或修改 tmpdir 设置:
- Linux 系统示例:
[mysqld]
tmpdir = /data/mysql_tmp
- Windows 系统示例:
[mysqld]
tmpdir = D:\mysql_temp
确保指定目录存在,并且 MySQL 服务运行账户(如 mysql 用户)对该目录有读写权限。

Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

78
查看详情

方法二:通过启动命令指定(不常用)
在启动 mysqld 时加入参数:
mysqld --tmpdir=/data/mysql_tmp
3. 创建并授权临时目录(以 Linux 为例)
假设要将临时目录设为 /data/mysql_tmp:
- 创建目录:
sudo mkdir -p /data/mysql_tmp - 修改属主:
sudo chown mysql:mysql /data/mysql_tmp - 设置权限:
sudo chmod 700 /data/mysql_tmp
完成后重启 MySQL 服务使配置生效:
sudo systemctl restart mysql
4. 注意事项
- tmpdir 设置的是磁盘临时文件路径,不是内存中临时表的存储位置。小的临时表仍会在内存中处理(使用 MEMORY 引擎),只有超出限制时才会写入磁盘。
- 影响 tmpdir 使用的场景包括:大查询的 ORDER BY、GROUP BY、临时表创建、ALTER TABLE 表结构变更等。
- 多个磁盘路径(Windows 支持用分号分隔)可用于分散 I/O 压力,但 Linux 通常只用一个路径。
- 不要将 tmpdir 设在空间紧张的系统分区(如 /tmp 所在根分区)。
基本上就这些。正确设置 tmpdir 能有效避免因临时空间不足导致的 SQL 执行失败问题。




