2

私のステータス レポートによると、mysql の場合、キャッシュ メモリに収まらないため、HDD に保存する必要があるテーブルがいくつかあることがわかります。それは大きな数ではありませんが、私はそれに困惑しています。

Created_tmp_disk_tables 3.4 k   

それらが正確にどのようなクエリであったかを調べる方法はありますか? 「作成された tmp ディスク テーブル」が true であるクエリのみをログに記録するように mysql に指示できますか?

すべてのクエリで tmp テーブルが作成されることはわかっています。多くの結合と並べ替えがありますが、クエリについて理解していることは、それらの一時テーブルのほとんどが非常に小さいということです。私が設定した

tmp_table_size   = 256M
max_heap_table_size     = 256M

そしてIMOは、この制限を超えるクエリがあってはなりません(それに近いクエリであってはなりません)

もちろん、遅いクエリログは知っていますが、ディスクテーブルを作成したかどうかについての情報はありません。これをカバーするいくつかのトピックを見つけましたが、Debian7 (mysql の特別なパッチが適用されたバージョン、mysql 5.6) 上の在庫の mySQL 5.5 ではそれらのどれも機能しないようです。

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/

(ところで、DB管理者またはサーバー障害がこれに適した場所である場合、トピック外で申し訳ありません)

4

0 に答える 0