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

“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很少有用,与问题无关.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值