2

我的状态报告说 mysql 告诉我有一些表需要存储在 HDD 上,因为它们不适合缓存。它不是一个大数字,但我对此感到困惑。

Created_tmp_disk_tables 3.4 k   

有没有办法找出那些确切的查询?那么我可以告诉mysql只记录“创建的tmp磁盘表”为真的查询吗?

我知道我所有的查询都创建了 tmp 表,我有很多连接和排序,但我对查询的理解是这些临时表中的大多数都非常小。我设置

tmp_table_size   = 256M
max_heap_table_size     = 256M

并且 IMO 不应该有任何超过这个限制的查询(甚至没有查询应该接近它)

我当然知道慢查询日志,但这没有任何信息天气它是否创建了磁盘表。我找到了一些涵盖此的主题,但它们似乎都不适用于 Debian7 上的库存 mySQL 5.5(mysql 的特殊补丁版本,mysql 5.6)

http://www.mysqlperformanceblog.com/2008/09/22/finding-what-c​​reated_tmp_disk_tables-with-log_slow_filter/

http://www.arubin.org/blog/2011/05/01/using-mysql-5-6-to-find-queries-creating-disk-temporary-tables/

(顺便说一句。如果数据库管理员或服务器故障是一个更好的地方,对不起题外话)

4

0 回答 0