2011-12-26 9 views
3

私は、「SELECT SLEEP(2);」という数字を挿入したユーザーがいます。データベースのパフォーマンスにこのクエリが与える影響を把握しようとしています。クエリはMySQLの低速クエリログに表示され、mk-toolsはクエリが実際のCPU時間と等しいかどうかは不明ですが、実行時間のかなりの部分を占めるとクエリを報告します。MySQLのSLEEP()関数はビジー状態ですか?

+0

['top'](http://linux.die.net/man/1/top)を検討してください。 –

+0

(私はそれが "忙しい"待っていないか、少なくとも意味のあるCPUを消費していると思います。他のトランザクションが干渉される理由はまったくありません)。 –

答えて

2

これはビジー待機ではありませんが、どちらかを実行することは有用ではありません。

MySQLのsleep()関数はスリープの長さに対してサーバースレッドを占有します。つまり、他の(もっと便利な)作業を実行できず、mysqlサーバープロセスでスレッドスタックを使い果たします。これらは望ましいことではなく、奨励されるべきではありません。

状況によっては、sleep()がスリープしている間にロックが保持されることがあります。

もちろん、sleep()関数はデバッグには非常に便利ですが、実動コードに含めないでください。

クライアントスレッドがスリープしたい場合、スリープする必要があります。スリープするにはmysqlに要求しないでください。

関連する問題