MySQL

Temporary Table Disk Spill

warning
performanceUpdated Mar 2, 2026

Queries creating temporary tables exceeding tmp_table_size/max_heap_table_size, spilling to disk. Disk-based temporary tables are much slower than in-memory, causing query latency increases. Common with large JOINs, GROUP BY, or DISTINCT operations.

Technologies:
How to detect:

mysql.performance.created_tmp_disk_tables / (mysql.performance.created_tmp_tables + mysql.performance.created_tmp_disk_tables) > 0.25, with mysql.performance.created_tmp_disk_tables rate elevated

Recommended action:

Query events_statements_summary_by_digest for queries with high SUM_CREATED_TMP_DISK_TABLES. Review tmp_table_size and max_heap_table_size settings - increase if sufficient memory available. Analyze queries causing disk temp tables: 1) Add indexes to avoid filesorts, 2) Rewrite queries to reduce result set size before aggregation, 3) Use covering indexes to avoid creating temp tables for JOINs. Monitor tmpdir disk space. For MySQL 8.0+, consider TempTable storage engine optimizations. Check events_statements_sum_sort_merge_passes for queries requiring disk-based sorting.