mysql maxtmptables_mysql – 如何降低“Created_tmp_disk_tables” – 在DISK上创建的临时表计数?...

本文探讨了MySQL中临时表的工作原理及其对系统性能的影响。文中详细解释了tmp_table_size配置的重要性,并提供了评估和优化临时表使用情况的方法,包括调整相关设置、启用慢查询日志等策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“26GB堆”是什么意思?

tmp_table_size = 256M非常危险.如果多个连接决定需要tmp表,则可能会耗尽RAM.交换比降低各种设置更糟糕.

在许多情况下,Tmp表是必需的.不要害怕他们.但要检查它们.

DISTINCT,GROUP BY,ORDER BY和UNION通常需要一个tmp表.如果tmp表适合min(tmp_table_size,max_heap_table_size),那么tmp表可以使用Engine = MEMORY在RAM中.如果大于那个,则tmp表是Engine = MyISAM并且速度较慢.使用MyISAM还有其他原因,最值得注意的是选择TEXT字段. More details.

另一个常见的“错误”是盲目使用VARCHAR(255)和utf8.当使用MEMORY时,它变为765字节的CHAR,这加快了对MyISAM的转换.

你给的数字……

> Created_tmp_disk_tables几乎与Created_tmp_tables一样大 – 这意味着tmp_table_size不够大(我怀疑),或者MEMORY不能使用(我怀疑).在我的分析中,超过20%是一个危险信号.

> Created_tmp_tables /正常运行时间 – 超过20 /秒是一个红旗

> Created_tmp_disk_tables /正常运行时间 – 高于1 /秒是一个红旗

> Created_tmp_disk_tables / Questions – 超过4%是一个红旗

设置long_query_time = 1并打开SlowLog,最好打开FILE.等一天,然后在slowlog上使用pt-query-digest查找“最差”查询.如果你无法弄清楚如何改进它们,请问我们.

我不同意Rolando的两个项目:

> RAM磁盘是一个坏主意 – 最好将额外的RAM提供给其他缓存,而不是试图超越MySQL.

> OPTIMIZE TABLE很少有用,与问题无关.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值