MySQL データベースの show processlist コマンドの使用の分析

MySQL データベースの show processlist コマンドの使用の分析

実際のプロジェクト開発では、多数のクエリや挿入、特にマルチスレッド挿入など、データベースに大きな負荷がかかる場合は、実行速度の遅いSQLの一部を強制終了することができます。よく使用されるコマンドはshow processlistです。

1. show processlistとは

show processlist: MySQL の公式 Web サイトを確認すると、主にデータベースで実行されているスレッドを照会していることがわかります。遅いスレッド (時間値の大きいスレッド) を強制終了できます。さらに、返される結果には、完全なプロセス リストの変更がリアルタイムで表示されます。

2. show processlistの使い方

show processlist を実行するには、コマンド ライン、SQL ステートメント、Navicat クライアントなどの 3 つの方法があります。

1) コマンドライン: SHOW FULL PROCESSLIST\G

実行結果は次のとおりです。

mysql> 完全なプロセスリストを表示\G

************************** 1. 行 ****************************
識別子: 1
ユーザー: システムユーザー
ホスト:
デシベル: NULL
コマンド: 接続
時間: 1030455
状態: マスターがイベントを送信するのを待機中
情報: NULL

************************** 2. 行 ****************************
識別子: 2
ユーザー: システムユーザー
ホスト:
デシベル: NULL
コマンド: 接続
時間: 1004
状態: すべてのリレーログを読み取りました。スレーブを待機しています。
    更新するためのI/Oスレッド
情報: NULL

************************** 3. 行 ****************************
識別子: 3112
ユーザー: replikator
ホスト: artemis:2204
デシベル: NULL
コマンド: Binlog ダンプ
時間: 2144
状態: すべてのバイナリログをスレーブに送信しました。バイナリログが更新されるのを待機しています。
情報: NULL

************************** 4. 行 ****************************
識別子: 3113
ユーザー: replikator
ホスト: iconnect2:45781
デシベル: NULL
コマンド: Binlog ダンプ
時間: 2086
状態: すべてのバイナリログをスレーブに送信しました。バイナリログが更新されるのを待機しています。
情報: NULL

************************** 5. 行 ****************************
識別子: 3123
ユーザー: stefan
ホスト: ローカルホスト
db: アポロン
コマンド: クエリ
時間: 0
状態: NULL
情報: 完全なプロセスリストを表示
セット内の行数 (0.00 秒)

2) SQL文を使用してデータベース内の関連情報テーブルを照会できます。

information_schema.processlist から id、db、user、host、command、time、state、info を選択し、time desc で並べ替えます。

3) Navicat ツールで表示できます。次の図は、Navicat を使用したクエリのスクリーンショットです。

3. show processlistの解釈方法

以下は、このコマンドを使用して得られた結果の解釈です。

Id: MySQL サーバーに接続されたスレッドの一意の識別子。スレッドを強制終了して接続を終了することができます。

ユーザー: データベースに接続している現在のスレッドのユーザー

ホスト: このステートメントが送信された IP とポートを表示します。問題のある発言をしたユーザーを追跡するために使用できます

db: スレッドが接続されているデータベース。存在しない場合は null

コマンド: 現在の接続によって実行されたコマンド (通常は sleep、query、または connect) を表示します。

時間: スレッドが現在の状態にある時間(秒単位)

状態: 現在の接続を使用している SQL ステートメントの状態を表示します。これは非常に重要な列です。すべての状態については後で説明します。状態はステートメントの実行における特定の状態にすぎないことに注意してください。たとえば、クエリなどの SQL ステートメントは、完了する前に、tmp テーブルへのコピー、結果のソート、データの送信などの状態を経る必要がある場合があります。

情報: スレッドによって実行された SQL ステートメント。ステートメントが実行されなかった場合は null になります。このステートメントは、クライアントから送信されたステートメントまたは内部で実行されたステートメントを実行するために使用できます。

4. show processlistの結果を処理する方法

上記の手順では、各スレッドの実行時間などを確認することができます。そのため、実行時間が長いスレッドについては、kill ID番号を直接実行することで、直接killすることができます。

5分以上の時間をチェックしたい場合は、次のSQLをスプライスして実行できます。

information_schema.processlist から、command != 'Sleep' かつ time > 5*60 の条件で concat('kill ', id, ';') を選択し、time desc で並べ替えます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • show processlist コマンドによる MySQL パフォーマンス検査の説明
  • MySQL SHOW PROCESSLISTはトラブルシューティングの全プロセスを支援します
  • mysql show processlistはmysqlクエリプロセスを表示します。
  • mysql show processlist コマンドを使用して mysql ロックを確認する方法
  • Ubuntu での一般的な MySQL コマンドと中国語の文字化け
  • MySQL での show コマンドの使用に関する詳細な紹介
  • php.ini に extension=php_mysqli.dll ディレクティブを追加する手順

<<:  Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

>>:  要素の$notifyポイントについての簡単な説明

推薦する

npmとcnpmを混在させる際の落とし穴の詳細な説明

目次原因理由NPM の紹介: CNPM の紹介:より良い方法方法の改善npm と cnpm を一緒に...

アイデアがWebプロジェクトを公開した後、Tomcatサーバーがプロジェクトとそのソリューションを見つけることができません

概要プロジェクトは正常に作成され、正常にデプロイされましたが、以下に示すように、Tomcat サーバ...

Docker Hubの動作原理と実装プロセスの分析

GitHub が提供するコード ホスティング サービスと同様に、Docker Hub はイメージ ホ...

jsでライトスイッチの効果を実現

この記事の例では、ライトスイッチ効果を実現するためのjsの具体的なコードを参考までに共有しています。...

IE のテキストモード! DOCTYPE の役割の紹介

前の記事で説明したフォームの自動入力の問題を解決した後、新しい問題が発生しました。ページの一部のスタ...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...

docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例

ドッカーの作成 バージョン: '2' サービス: fastdfsトラッカー: ホスト...

MySQL データベース インデックスの面接の質問 (基本的なプログラマー スキル)

目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...

WindowsにMySQL5.7圧縮パッケージを素早くインストールする

この記事では、Windows に MySQL 5.7 圧縮パッケージをインストールする方法について説...

純粋なJSを使用してセカンダリメニュー効果を実現します

この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...

フックを使用して React コンポーネントを書くときに注意すべき 5 つの点

目次01. レンダリングが不要な場合はuseStateを使用する02. リンクの代わりにrouter...

Windows での MySQL の詳細なインストール手順と基本的な使用方法

目次1. MySQLをダウンロードする2. MySQLをインストールする3. MySQL の基本的な...

Dockerコンテナの中国語言語パックの設定の問題を解決する

Dockerでdocker search centosを使用する場合docker pull dock...

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

VUEはG2チャートを使用した実装を導入します

目次G2チャートについて使用テンプレートで使用される完全なコード (棒グラフ)世界地図を追加するG2...