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 の設定に関するチュートリアル (画像付き)

推薦する

Dockerfile を使用したカスタムイメージの構築の実装

目次序文Dockerfile の紹介Dockerfileはイメージプロセスを構築するDockerfi...

ウェブサイトのカラースキーム ウェブサイトに適した色の選択

色はウェブサイト訪問者に影響を与えますか?数年前までは、ウェブサイトはまだ贅沢品でしたが、今ではほと...

Vue は動的な円形のパーセンテージ進捗バーを実装します

最近、小さなプログラムを開発しているときに、次の設計図のような円形のパーセンテージ進捗状況バーを実装...

MySQL のファントムリード問題を解決する方法

目次序文1. ファントムリーディングとは何ですか? 2. ファントムリーディングの問題点は何ですか?...

HTML ページでギリシャ文字を使用する方法

ギリシャ文字は、特に数学や物理学などの科学技術分野で非常によく使用される記号列であり、特定の意味を持...

H5ウェイクアップアプリの実装方法と注意点のまとめ

目次序文APPメソッドにジャンプURLスキームメタタグユニバーサルリンクさまざまな使い方URLスキー...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

Linux ファイルを分割するための split コマンドの詳細な説明

いくつかの簡単な Linux コマンドを使用すると、ストレージまたは電子メールの添付ファイルのサイズ...

MySQLデータベースホスト127.0.0.1とlocalhostの違い

私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもし...

Java+Tomcat 環境の展開とインストールのプロセス図

次に、Centos7 に Java+Tomcat をインストールします。インターネット上には多くの記...

Vue パッケージサイズの最適化の実装 (1.72M から 94K)

1. 背景最近、独立した開発者がUIデザインを行うのを支援するために、uideaというWebサイト...

MySQL Innodbの主な機能挿入バッファ

目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...

JavaScript における var、let、const の違いの詳細な説明

目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...