Mysql は、デッドロック問題を解決するために kill コマンドを使用します (実行中の特定の SQL ステートメントを強制終了します)。

Mysql は、デッドロック問題を解決するために kill コマンドを使用します (実行中の特定の SQL ステートメントを強制終了します)。

MySQL を使用して特定のステートメントを実行すると、データ量が多いためにデッドロックが発生し、応答が返されない場合があります。この時点で、リソースを消費しているクエリ ステートメントを強制終了する必要があります。KILL コマンドの構文形式は次のとおりです。

KILL [接続 | クエリ] thread_id

mysqld への各接続は、個別のスレッドで実行されます。SHOW PROCESSLIST ステートメントを使用して実行中のスレッドを確認し、KILL thread_id ステートメントを使用してスレッドを強制終了できます。

KILL ではオプションで CONNECTION または QUERY 修飾子を使用できます。KILL CONNECTION は修飾子なしの KILL と同じです。つまり、指定された thread_id に関連付けられた接続を終了します。 KILL QUERY は、接続で現在実行中のステートメントを終了しますが、接続はそのまま残ります。

PROCESS 権限がある場合は、すべてのスレッドを表示できます。スーパー管理者権限を持っている場合は、すべてのスレッドとステートメントを終了できます。それ以外の場合は、自分のスレッドとステートメントのみを表示および終了できます。また、mysqladmin processlist コマンドと mysqladmin kill コマンドを使用して、スレッドを調べたり強制終了したりすることもできます。

まず MySQL にログインし、show processlist; を使用して現在の MySQL 内の各スレッドのステータスを表示します。

mysql> プロセスリストを表示します。 
+------+------+----------------------+--------+---------+----------+--------------------  
| ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 
+------+------+----------------------+--------+---------+----------+--------------------  
| 7028 | ルート | ucap-devgroup:53396 | プラットフォーム | スリープ | 19553 | | NULL  
| 8352 | ルート | ucap-devgroup:54794 | プラットフォーム | スリープ | 4245 | | NULL 
| 8353 | ルート | ucap-devgroup:54795 | プラットフォーム | スリープ | 3 | | NULL 
| 8358 | ルート | ucap-devgroup:62605 | プラットフォーム | クエリ | 4156 | 更新中 | t_shop セットを更新 |

上記は、現在実行中の SQL ステートメントのリストを表示し、最も多くのリソースを消費するステートメントに対応する ID を見つけます。

次に、kill コマンドを実行します。コマンドの形式は次のとおりです。

ID を強制終了します。 
- 例: 
8358人を殺す

ただ殺すだけ。

以下もご興味があるかもしれません:
  • mysql show processlistはmysqlクエリプロセスを表示します。
  • MySQLのkillがスレッドをkillできない理由
  • MYSQL でプロセスを表示および終了する方法

<<:  Linux環境でglogログライブラリを使用する方法

>>:  JavaScript で最も高速なループはどれですか?

推薦する

DockerでRedisをデプロイして起動する方法

DockerでRedisをデプロイするまずLinuxにDockerをインストールし、次にDocker...

JSフロントエンドモジュール化のいくつかの仕様についての簡単な説明

目次序文フロントエンドモジュール開発の価値厄介な名前の競合面倒なファイル依存関係モジュール化の利点C...

JavaScript を使用してハイパーリンクのリダイレクトを防ぐ方法 (複数の書き方)

JavaScript を使用すると、ハイパーリンクがジャンプするのを防ぐことができます。方法は次の...

画像をラベルとして使用すると、IE では for 属性が機能しません。

例えば:コードをコピーコードは次のとおりです。 <input type="check...

MySQL InnoDB row_id 境界オーバーフロー検証方法の手順

背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...

Vue は Websocket カスタマー サービス チャット機能を実装します

この記事では主に基本的なチャットの実装方法を紹介します。今後は絵文字や写真のアップロードなどの機能も...

Linux ディスク管理 LVM の使用

1. LVM の概要Linux ディスクを管理するときに、このような状況に遭遇することがよくあります...

MySQL データ ウェアハウスを保護するための 5 つのヒント

さまざまなソースからデータを集約することで、中央倉庫を作成できます。データ ウェアハウスは、ビジネス...

MySQL binlog を使用して誤って削除されたデータベースを復元する方法

目次1 現在のデータベースの内容を表示し、データベースをバックアップする2 bin_log関数を有効...

Windows10システムにスーパーセットをインストールする手順

Superset は、エレガントなインターフェースとデータ テーブルに基づく動的なデータ生成を主な機...

Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル

1. Navicat for MySQL 15をダウンロードするhttps://www.navica...

77.9K の GitHub リポジトリを持つ Axios プロジェクト: 学ぶ価値のあることは何でしょうか?

目次序文1. Axiosの紹介2. HTTPインターセプターの設計と実装2.1 インターセプターの紹...

フォームのデフォルトの送信方法を変更する方法

htmlのデフォルトの送信方法は、postではなくgetです。postに変更したい場合は、 meth...

Vueは小さなフォーム検証機能を実装します

この記事では、フォーム検証を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

SSMは、mysqlデータベースアカウントのパスワード暗号文ログイン機能を実装します。

導入当社は、情報セキュリティと機密アプリケーションに関わるいくつかのプロジェクトの研究開発に従事して...