2

私のmysqlサーバーはlong_query_time = 2構成されていますが、これらのクエリが遅いクエリログに報告されているのをまだ見ています。

# Time: 120730  5:06:41
# User@Host: <user> @ <Host> [<IP>] 
# Query_time: 0.000412  Lock_time: 0.000060 Rows_sent: 5  Rows_examined: 5
SET timestamp=1343639201;
SELECT album_id FROM `TB_albums` where album_id!='res_4fe4333271bda7.42833845' and deleted is NULL order by `created_time` desc limit 5;

ご覧のとおり、Query_time: 0.000412 Lock_time: 0.000060 は 2 秒をはるかに下回っているようです。

これらの「高速」クエリが報告される理由がわかりましたか?

4

4 に答える 4

1

変数のチェックlog-queries-not-using-indexes

show variables like '%log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   | 
+-------------------------------+-------+

あなたの場合はOFFに設定する必要があります。ONの場合は、ファイルに設定log_queries_not_using_indexes = OFFmy.cnfてからMySQLサーバーを再起動できます。

于 2012-07-30T09:23:14.453 に答える
0

私の知る限り、MySQLは、クエリの送信からフェッチフェーズの終了までのデータフェッチクエリのクエリ時間を測定します。これは、次のようなことを意味します

Start timer
Start fast SELECT query
Wait for result 
Check timer and note time
sleep 2 seconds
fetch query results
Stop timer

と で終わりnoted time<2send time>2s遅いクエリログがより長い時間トリガーされます。

于 2012-07-30T09:22:29.227 に答える
0

マニュアルから、クエリを show query ログに書き込むことに関連する他の構成を確認する必要があります。

サーバーは、次の順序で制御パラメーターを使用して、スロー クエリ ログにクエリを書き込むかどうかを決定します。

1.クエリは管理ステートメントではないか、--log-slow-admin-statements が指定されている必要があります。

2. クエリが long_query_time 秒以上かかっているか、log_queries_not_using_indexes が有効になっていて、クエリが行ルックアップにインデックスを使用していない必要があります。

3.クエリは、少なくとも min_examined_row_limit 行を調べている必要があります。

4. log_throttle_queries_not_using_indexes 設定に従って、クエリを抑制してはなりません。

于 2012-07-30T09:24:06.997 に答える