重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

殺す

KILLステートメントは、現在のTiDBクラスタの任意のTiDBインスタンスの接続を終了するために使用されます。

あらすじ

KillStmt
KILLTIDBCONNECTIONQUERYCONNECTION_ID

次の例は、現在のクラスタのすべてのアクティブなクエリを取得し、それらのいずれかを終了する方法を示しています。

SELECT ID, USER, INSTANCE, INFO FROM INFORMATION_SCHEMA.CLUSTER_PROCESSLIST;
+---------------------+------+-----------------+-----------------------------------------------------------------------------+
| ID                  | USER | INSTANCE        | INFO                                                                        |
+---------------------+------+-----------------+-----------------------------------------------------------------------------+
| 8306449708033769879 | root | 127.0.0.1:10082 | select sleep(30), 'foo'                                                     |
| 5857102839209263511 | root | 127.0.0.1:10080 | select sleep(50)                                                            |
| 5857102839209263513 | root | 127.0.0.1:10080 | SELECT ID, USER, INSTANCE, INFO FROM INFORMATION_SCHEMA.CLUSTER_PROCESSLIST |
+---------------------+------+-----------------+-----------------------------------------------------------------------------+
KILL 5857102839209263511;
Query OK, 0 rows affected (0.00 sec)

MySQLの互換性

  • MySQLのKILLステートメントは、現在接続されているMySQLインスタンスの接続のみを終了できますが、TiDBのKILLステートメントは、クラスタ全体の任意のTiDBインスタンスの接続を終了できます。
  • 現在、MySQLコマンドラインctrl + cを使用してTiDBでクエリまたは接続を終了することはサポートされていません。

動作変更の説明

v6.1.0以降、TiDBはグローバルキル機能をサポートします。この機能はデフォルトで有効になっており、 enable-global-kill構成で制御されます。

v6.1.0以降、TiDBはグローバルキル機能をサポートします。これはデフォルトで有効になっています。

グローバルキル機能が有効になっている場合、 KILLステートメントとKILL TIDBステートメントの両方でインスタンス間のクエリまたは接続を終了できるため、クエリまたは接続を誤って終了することを心配する必要はありません。クライアントを使用して任意のTiDBインスタンスに接続し、 KILLまたはKILL TIDBステートメントを実行すると、ステートメントはターゲットTiDBインスタンスに転送されます。クライアントとTiDBクラスタの間にプロキシがある場合、 KILLステートメントとKILL TIDBステートメントも実行のためにターゲットTiDBインスタンスに転送されます。

グローバルキル機能が有効になっていない場合、またはv6.1.0より前のバージョンのTiDBを使用している場合は、次の点に注意してください。

  • デフォルトでは、 KILLはMySQLと互換性がありません。これは、ロードバランサーの背後に複数のTiDBサーバーを配置するのが一般的であるため、間違ったTiDBサーバーによって接続が終了するケースを防ぐのに役立ちます。現在接続されているTiDBインスタンスで他の接続を終了するには、 KILL TIDBステートメントを実行してTIDBサフィックスを明示的に追加する必要があります。
  • クライアントが常に同じTiDBインスタンスに接続されることが確実でない限り、構成ファイルにcompatible-kill-query = trueを設定することは強くお勧めしません。これは、デフォルトのMySQLクライアントでctrl + cを押すと、 KILLが実行される新しい接続が開くためです。クライアントとTiDBクラスタの間にプロキシがある場合、新しい接続が別のTiDBインスタンスにルーティングされる可能性があり、誤って別のセッションが強制終了される可能性があります。
  • KILL TIDBステートメントはTiDB拡張です。このステートメントの機能は、 KILL [CONNECTION|QUERY]コマンドおよびMySQLコマンドラインctrl + cに似ています。同じTiDBインスタンスでKILL TIDBを使用しても安全です。

も参照してください