2016-11-08 7 views
0

私のMySQLデータベース(Innodb)には、実行中の長いINSERTクエリが同時に実行されます。mysqlでクエリを停止しますか?

クエリは、node-mysqlバインディングを使用しているnode.jsアプリケーションから、特に接続プーリングに 'pool()'を使用しています。

私はmytop経由でクエリを監視していますが、私は長時間実行している接続が「スリープ」(600秒を超えて実行中)になっています。

これは、ローロックなどの理由でハングしているクエリであるのか、それともこれらが接続プールからの接続なのかどうかはわかりません。 thread command values上のMySQLのドキュメント(それがあなたのcmdフィールドに相当)のような

enter image description here

答えて

1

スリープ

スレッドがそれに新しいステートメントを送信するためにクライアントを待っていると言います。

これは、sleepステータスの接続は、新しい命令が送信されるのを待っていることを意味し、現時点では何も動作していません。接続がビジー状態の場合は、cmdフィールドに異なる値が表示され、stateフィールドに詳細な説明が表示されます。後者の可能な値は、MySQLのドキュメントGeneral Thread Statesに記載されています(ロックの待機に関連する状態も参照できます)。

上記の情報に基づいて、スリープ状態の接続が接続プールからのものであるかどうかはわかりませんが(IPアドレスに基づいている可能性があります)、確かに滞っているクエリはありません。

+0

明らかにするために、これらは行ロックのためにスタックされたクエリを示すものではありませんか? –

+0

私の答えの最後の段落を参照してください。 – Shadow

+0

@Thanks - これらのスリープ接続はCPUまたはメモリリソースを消費しますか?言い換えれば、私は心配する必要がありますか、私はそれらを残すことができますか? –

関連する問題