mysql 临时表大小_mysql - 如何查看MySQL内部innodb临时表的大小 - SO中文参考 - www.soinside.com...

# User@Host: mailboxer[mailboxer] @ [192.168.10.165]

# Thread_id: 11167745 Schema: board

# Query_time: 1.009400 Lock_time: 0.000190 Rows_sent: 4 Rows_examined: 1543719 Rows_affected: 0 Rows_read: 4

# Bytes_sent: 278 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0

# QC_Hit: No Full_scan: Yes Full_join: No Tmp_table: No Tmp_table_on_disk: No

# Filesort: No Filesort_on_disk: No Merge_passes: 0

(上面的示例来自Percona文档,显示了扩展字段,尽管该示例适用于未创建临时表的查询,因此大小显示为0.)

在Oracle MySQL中,PERFORMANCE_SCHEMA中的查询事件中提供了一些相同的扩展信息,但不是临时表大小。

在2014年,我记录了一个功能请求以提供此信息:https://bugs.mysql.com/bug.php?id=74484并且已经确认了此错误,但据我所知,这还没有实现。

有点不清楚这是如何实现的,因为任何给定的查询都可以创建不同大小的多个临时表。我相信Percona功能显示了这种情况下临时表大小的总和。

作为建议,我所能提供的是增加max_heap_table_size和tmp_table_size的增量,并监测Created_tmp_disk_tables报告的SHOW GLOBAL STATUS的增长率,与Created_tmp_tables(不使用磁盘的临时表)相比。由于允许的tmp表大小能够容纳更大比例的临时表,因此您应该开始看到磁盘上临时表与内存中临时表的比率会降低。

通常没有必要增加tmp_table_size来保存每个可能的临时表,无论多大。您希望最大的异常值来使用磁盘。但只要临时表在98%的时间内使用内存,你应该没问题。这意味着Created_tmp_disk_tables与Created_tmp_tables的比率应为1:50或更高。


版权声明:本文为weixin_28949779原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。