mysqlは、キルコマンドを使ってデッドロック問題を解決し、実行中または応答していないsql文を殺し、

1920 ワード

mysqlを使っていくつかの語句を実行する時、データの量が大きすぎるためにデッドロックになって、反映していません.この時、ある資源を使っているquery文をkillで落としてもいいです.KILL命令の文法形式は以下の通りです.
KILL[CONNETION|QUERY]thread_id
各mysqldとの接続は独立したスレッドで実行されます.SHOW PROCESSLIST文を使って、どのスレッドが実行されているかを確認して、KILL thread_を使ってもいいです.id文はスレッドを終了します.
KILLは、選択されたCONNETIONまたはQULRY修正子を許可します.KILL CONNEECTIONは、修正符を含まないKILLと同じです.指定されたthread(u)を終了します.IDに関する接続.KILL QUERYは接続が現在実行中のステートメントを終了しますが、接続はそのまま維持されます.
PROCESS権限を持っているなら、すべてのスレッドを見ることができます.スーパー管理者権限がある場合は、スレッドとステートメントをすべて終了します.さもないと、あなたはスレッドとステートメントを確認して終了するしかありません.mysqladmin processlistとmysqladmin killコマンドを使ってスレッドをチェックして終了することもできます.
まずmysqlに登録して、それから使う:show processlist;現在のmysqlのスレッドの状態を確認します.
?
1
2
3
4
5
6
7
8mysql> show processlist;+------+------+----------------------+----------------+---------+-------+-----------+---------------------| Id   | User| Host                 | db             | Command | Time  | State     | Info+------+------+----------------------+----------------+---------+-------+-----------+---------------------| 7028 | root | ucap-devgroup:53396  | platform       | Sleep   | 19553 |           |NULL| 8352 | root | ucap-devgroup:54794  | platform       | Sleep   |  4245 |           |NULL| 8353 | root | ucap-devgroup:54795  | platform       | Sleep   |     3 |           |NULL| 8358 | root | ucap-devgroup:62605  | platform       | query   |  4156 | updating  |updatet_shop set  |以上は現在実行中のsql文のリストを示しています.消費リソースが一番大きい文に対応するidを見つけました.
そして、キルコマンドを実行します.コマンド形式は以下の通りです.
?
1
2
3 kill id;-- : kill 8358