実際のプロジェクト開発では、多数のクエリや挿入、特にマルチスレッド挿入など、データベースに大きな負荷がかかる場合は、実行速度の遅い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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)
Mysqldump は MySQL の論理バックアップに使用されます。高速ではありませんが、柔軟性が...
Unix/Linux システムの nobody ユーザーとは何ですか? 1. Windows システ...
ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...
最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...
目次序文どのような状況でメモリリークが発生する可能性がありますか? 1. 偶発的なグローバル変数2....
インストール手順1. Redisをインストールするdocker search redis和docke...
目次1. プロトタイプの関係2. プロトタイプチェーン3. 結論序文:前回の記事では、JavaScr...
JavaScript 入門JavaScript は軽量なインタープリタ型の Web 開発言語です。言...
目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...
この記事の例では、参考までにvueタイムラインコンポーネントの具体的な実装コードを共有しています。具...
MySQL 8.0.12のダウンロードとインストールのチュートリアルは参考までに、具体的な内容は次の...
Oracle、DB2、SQL Server などの他の大規模データベースと比較すると、MySQL に...
最近、あるサービスにアラームが発生し、耐えられなくなっています。アラーム情報は次のとおりです。メトリ...
目次1. コンセプト1.1 定義1.2 デコレータファクトリー1.3 デコレータの組み合わせ1.4 ...
この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...