MySQL 実行ステータスの表示と分析

MySQL 実行ステータスの表示と分析

MySQL のパフォーマンスに問題があると思われる場合は、通常、まずshow processlistを使用して現在の MySQL 実行ステータスを確認します。次に例を示します。

状態列の情報は非常に重要です。まず各列の意味を確認し、次に共通の状態ステータスを確認します。

列の意味

1. id

ステートメントを強制終了する場合に使用するフラグ。例: mysql> kill 207;

2. ユーザー

現在のユーザーを表示します。root でない場合は、このコマンドは権限範囲内の SQL ステートメントのみを表示します。

3. ホスト

ステートメントが送信されたIPとポートを表示します。これにより、問題のあるステートメントを発行したユーザーを追跡できます。

4.db

このプロセスが現在どのデータベースに接続されているかを表示します

5. コマンド

現在の接続で実行されたコマンド(通常はスリープ、クエリ、接続)を表示します。

6. 時間

この状態の継続時間(秒)

7. 状態

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

8.情報

この SQL 文を表示します。長さの制限があるため、長い SQL 文は完全には表示されませんが、問題文を判断するための重要な基準となります。

状態 共通状態分析

1. 睡眠

通常、リソースが解放されないことを意味します。接続プール経由の場合、スリープ状態は一定の範囲内で一定である必要があります。例:

データのクエリ時間は 0.1 秒ですが、ネットワーク出力には約 1 秒かかります。元のデータ接続は 0.1 秒で解放できますが、フロントエンド プログラムはクローズ操作を実行せず、結果を直接出力するため、結果がユーザーのデスクトップに表示されるまでデータベース接続はスリープ状態のままになります。

2. ロックされています

操作はロックされています。通常、innodb を使用すると、ロック状態の発生を効果的に減らすことができます。

3. tmpテーブルにコピーする

インデックスと既存の構造がクエリ条件をカバーできない場合、クエリ要件を満たすために一時テーブルが作成され、大きな I/O 圧力が発生します。Copy to tmp table は通常、テーブル結合クエリに関連しています。関連するクエリを減らすか、クエリ ステートメントを徹底的に最適化することをお勧めします。この状態でステートメントの実行時間が長すぎると、他の操作に重大な影響を及ぼします。この場合、操作を強制終了できます。

4. データの送信

データ送信はデータを送信することではなく、物理ディスクからデータを取得するプロセスです。結果セットの数が多い場合は、異なるディスクフラグメントからデータを抽出する必要があります。送信データ接続が多すぎる場合は、通常、クエリの結果セットが大きすぎる、つまりクエリのインデックス項目が十分に最適化されていないことが原因です。

5. 結果をクエリキャッシュに保存する

この状態が頻繁に発生する場合は、 set profilingを使用して分析します。リソース オーバーヘッドが SQL オーバーヘッド全体の大きな割合を占めている場合 (オーバーヘッドが非常に小さい場合でも、割合を確認します)、クエリ キャッシュが断片化されていることを意味します。flush flush query cache使用してすぐにクリアします。クエリ キャッシュ パラメータを適切に設定できます。

MySQL データベースの一般的な 2 つのボトルネックは、CPU と I/O のボトルネックです。CPU の飽和は通常、データがメモリにロードされるか、ディスクから読み取られるときに発生します。ディスク I/O ボトルネックは、ロードされたデータがメモリ容量よりはるかに大きい場合に発生します。アプリケーションがネットワーク上に分散されている場合、クエリ量が非常に大きいときにネットワーク上でボトルネックが発生します。システムのパフォーマンス状態を表示するには、mpstat、iostat、sar、vmstat を使用できます。

サーバーハードウェアのパフォーマンスボトルネックに加えて、MySQL システム自体についても、ツールを使用してデータベースのパフォーマンスを最適化することができます。通常、インデックスを使用する、EXPLAIN を使用してクエリを分析する、MySQL の内部構成を調整するという 3 つのタイプがあります。

MySQL を最適化する場合、通常はデータベースを分析する必要があります。一般的な分析方法には、スロー クエリ ログ、EXPLAIN 分析クエリ、プロファイリング分析、および show コマンド クエリ システム ステータスとシステム変数などがあります。パフォーマンスのボトルネックを特定して分析することによってのみ、データベース システムのパフォーマンスをより適切に最適化できます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQLデータベースのスケジュールバックアップを実装する方法
  • JDBC を使用して MySQL を操作するための簡単な分析では、Class.forName("com.mysql.jdbc.Driver") を追加する必要があります。
  • MySQLデータベースとOracleデータベース間のバックアップをインポートする
  • php+mysql によって開発された最もシンプルなオンライン質問バンク (オンライン質問システム)
  • MySQLでSQL文がどのように実行されるかの詳細な説明
  • MySQL データベース 8 - データベース内の関数の適用の詳細な説明
  • MySQLのダウンロードとインストールのプロセスの詳細な説明
  • MySQL LOAD_FILE() 関数メソッドの概要
  • MySQL 8.0.15 のダウンロードとインストールの詳細なチュートリアルは初心者にとって必須です。
  • クエリでのMySQLのユニークキーの使用と関連する問題

<<:  Vue+js 矢印をクリックして画像を切り替える

>>:  Linux でサーバーに接続するための SSH と Xshell の設定に関するチュートリアル (画像付き)

推薦する

Docker デプロイメントサービスの落とし穴を登る過程の詳細

初めて書きます。自己紹介させてください...みなさんこんにちは。私はジャスミンです。なぜジャスミンと...

Linux での MySQL 5.7.17 の最新安定バージョンのインストール チュートリアル

ソースコードを通じて Linux に最新の安定バージョンの MySQL をインストールします: my...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

JavaScript でプロトタイプ パターンを実装する方法

概要プロトタイプ パターンは、プロトタイプ インスタンスによって作成されるオブジェクトの型を指し、こ...

Dockerにおけるコンテナとイメージの違いについてお話ししましょう

鏡とは何ですか?イメージは、複数のイメージ レイヤー (UnionFS および AUFS ファイル ...

Webpackプラグインを書いてnpmに公開するための80行のコード

1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...

HTML テーブルタグチュートリアル (19): 行タグ

<TR> タグの属性は、次の表に示すように、テーブル内の各行のプロパティを設定するために...

Vue3とTypeScriptを組み合わせたプロジェクト開発の実践記録

目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...

HTML 要素に注釈を付けるときにクラスと ID のどちらが優れているかを分析する

Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...

MySQLにおける時刻日付型と文字列型の選択について

目次1. DATETIMEとTIMESTAMPの使用1. 類似点2. 相違点3. 選択2. varc...

vsftpd ユーザーが ssh 経由でログインすることを禁止する方法

序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...

MySQLがトランザクション分離を実装する方法の簡単な分析

目次1. はじめに2. RC および RR 分離レベル2.1. RRトランザクション分離レベルでのク...

CSS を使用して複数の方法で等高レイアウトを実装するサンプル コード

この記事で説明する等高レイアウトでは、純粋な CSS を使用して、要素の高さを手動で設定することなく...

LinuxとGNUシステムの関係の詳細な説明

目次私たちが毎日実行している Linux システムとは何でしょうか? LinuxカーネルとGNUシス...