web-dev-qa-db-ja.com

「log_queries_not_using_indexes」を有効にすると、「long_query_time」が無効になりますか?

Mysqlでは、log_queries_not_using_indexesslow_query_loglong_query_timeを有効にすると、クエリ時間がlong_query_timeよりはるかに短い場合でも、生成されたスロークエリログファイルに多くのクエリが含まれることに気付きました。

log_queries_not_using_indexesが有効になると、Mysqlは「long_query_time」が何であっても、インデックスを使用しないすべてのクエリをログに記録するようです。

これを克服する方法はありますか?つまり、インデックスを使用しているかどうかに関係なく、long_query_timeよりも時間がかかるすべてのクエリをログに記録する方法はありますか?

14
coolcfan

これは予想される動作です。オンラインでドキュメントを参照しますが、要約すると:

  • long_query_timeはクエリ実行時間のしきい値であり、それを超えるとログに記録されます。インデックスを使用するかどうかに関係なく、しきい値を超えるクエリはログに記録されます。

  • log_queries_not_using_indexesは、スキャンする行数を制限するためにインデックスを使用しないすべてのクエリを追加でログに記録するようMySQLに指示します。この条件へのログオンは、実行時間に関係なく発生します。

あなたが見ているものを説明するのに役立つことを願っています。たぶんあなただけが欲しいようですlong_query_timeおよびnotlog_queries_not_using_indexes特定のしきい値よりも時間がかかるクエリのみをキャプチャすることが目的の場合。

ドキュメントリンク: http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_log-queries-not-using-indexes

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_long_query_time

27
drogart