列出 "copying to tmp table on disk" MySQL 个查询

List "copying to tmp table on disk" MySQL queries

有时我们使用的 MySQL 数据库会在 /tmp 磁盘上生成文件以在执行查询时临时存储结果。

在 Whosebug 上有很多关于如何禁用此行为或通过例如使用 RAM 磁盘加速它的帖子。

不过,我正在寻找一种优雅的方式来保存生成此类文件的查询,因为我相信这些查询中的大多数都可以优化。

有没有办法记录这些查询?

鉴于此类查询通常需要很长时间,我们可以假设这些都是慢查询。我们可以 log slow queries 使用 slow_query_log_fileslow_query_log 变量:

-- set the log file location
SET GLOBAL slow_query_log_file = '/path/to/slow_log_file.log';
-- turn on slow query logging
SET GLOBAL slow_query_log = ON;

确保 mysql 用户(或运行 MySQL 守护进程的用户)对目录和文件具有写入权限。