ホームページ php教程 PHP开发 MySQL はパフォーマンスに焦点を当て、関連する分析コマンドの詳細な説明を行っています。

MySQL はパフォーマンスに焦点を当て、関連する分析コマンドの詳細な説明を行っています。

Nov 19, 2016 am 09:32 AM
mysql

1. MySQL のパフォーマンス監視に焦点を当てる


QPS (1 秒あたりのクエリ): ここでの QPS は、実際には MySQL サーバーによって 1 秒あたりに実行されるクエリの総量を指します:
QPS = クエリ / 秒


TPS (TPS)トランザクション ボリューム): MySQL Server には直接トランザクション カウンターがありません。ロールバック カウンターとコミット カウンターを通じてのみシステム トランザクション ボリュームを計算できます。したがって、次の方法でクライアント アプリケーションによって要求された TPS 値を取得する必要があります:
TPS = (Com_commit + Com_rollback) / Seconds


キー バッファー ヒット率: キー バッファー ヒット率は、MyISAM タイプ テーブルのインデックスを表します。キャッシュヒット率。このヒット率の大きさは、MyISAM タイプのテーブルの読み取りおよび書き込みパフォーマンスに直接影響します。キー バッファのヒット率には、実際には読み取りヒット率と書き込みヒット率が含まれます。これら 2 つのヒット率の値は MySQL では直接指定されませんが、次のように計算できます:
key_buffer_read_hits = (1 - Key_reads / Key_read_requests) * 100 %
key_buffer_write_hits= (1 - Key_writes / Key_write_requests) * 100%

Innodb バッファー ヒット率: ここで、Innodb バッファーとは、Innodb タイプのテーブル スペースのデータとインデックスをキャッシュするために使用されるメモリである innodb_buffer_pool を指します。キー バッファーと同様に、MySQL サーバーによって提供される対応するステータス値に基づいてヒット率を計算することもできます:
innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100%


クエリ キャッシュ ヒット率: クエリ キャッシュを使用する場合の場合、クエリ キャッシュが正しく使用されているかどうかがわかる可能性があるため、クエリ キャッシュのヒット率を監視することも必要です。

クエリ キャッシュのヒット率は次のように計算されます:
Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100%


テーブル キャッシュのステータス: テーブル キャッシュの現在のステータスは、システム パラメーター table_open_cache の設定が適切かどうかを判断するのに役立ちます。ステータス変数 Open_tables と Opened_tables の比率が低すぎる場合は、テーブル キャッシュ設定が小さすぎることを意味します:
SHOW STATUS LIKE 'Open%';
​​
スレッド キャッシュ ヒット率: スレッド キャッシュ ヒット率はシステムを直接反映します。パラメータ thread_cache_size 設定は適切ですか? thread_cache_size パラメータを適切に設定すると、新しい接続の作成に必要なリソースを大量に節約できます。
スレッド キャッシュ ヒット率は次のように計算されます:
Thread_cache_hits = (1 - Threads_created / Connections) * 100%

ロック ステータス: ロック ステータスにはテーブル ロックと行ロックが含まれます。システム ステータス変数を通じてロックの合計数を取得できます。 、lock 他スレッドを待たせた回数、ロック待ち時間情報。
SHOW STATUS LIKE '%lock%';
ロック関連のシステム変数を通じて、他の既存のスレッドが待機している回数を含むテーブル ロックの合計数を取得できます。同時に、行ロックの合計数、行ロックの合計時間、各行ロックの待機時間、行ロックによる最大待機時間、行ロックの数など、非常に詳細な行ロック情報も取得できます。現在行ロックを待機しているスレッドの数。これらの量を監視することで、システム全体のロックアップが深刻かどうかを明確に理解できます。 Table_locks_waited と Table_locks_immediate の比率が大きい場合は、テーブル ロックによるブロックが深刻であることを意味しており、Query ステートメントの調整、ストレージ エンジンの変更、またはビジネス ロジックの変更が必要になる可能性があります。調整した。もちろん、具体的な改善方法は実際のシナリオに基づいて判断する必要があります。 Innodb_row_lock_waits が大きい場合は、Innodb の行ロックも深刻であり、他のスレッドの通常の処理に影響を与えていることを意味します。原因も見つけて解決する必要があります。深刻な Innodb 行ロックの原因は、Query ステートメントで使用されるインデックスが十分に適切ではなく (Innodb 行ロックはインデックスに基づいてロックされる)、ギャップ ロックが大きすぎることである可能性があります。また、システム自体の処理能力が限られており、他の側面 (ハードウェア デバイスなど) を考慮する必要がある場合もあります。

レプリケーションの遅延: レプリケーションの遅延は、スレーブ データベースが不整合な状態にある時間の長さに直接影響します。
スレーブノードで「SHOW SLAVE STATUS」コマンドを実行し、Seconds_Behind_Master項目の値を取得して、スレーブの現在の遅延(単位:秒)を把握します。

Tmp テーブルのステータス: Tmp テーブルのステータスは主に、MySQL が一時テーブルを多量に使用するかどうか、および一時テーブルが大きすぎてメモリからディスク ファイルにスワップアウトする必要があるかどうかを監視するために使用されます。一時テーブルの使用状況情報は、次のメソッドで取得できます:
SHOW STATUS LIKE 'Created_tmp%';
+-------------------------+ -------+
| 値 |
+--------------------------+------+
| 作成された_tmp_disk_tables |
| 作成された_tmp_tables |
+-------------+------+
非常に大きい場合は、システム内のソート操作が多すぎるか、テーブルの接続方法があまり最適化されていない可能性があります。また、Created_tmp_tables に対する Created_tmp_disk_tables の比率が高すぎる (10% を超えるなど) 場合は、tmp_table_size システム パラメーターが十分に大きく設定されているかどうかを検討する必要があります。


Binlog Cache の使用状況: Binlog Cache は、まだディスクに書き込まれていない Binlog 情報を保存するために使用されます。
関連するステータス変数は次のとおりです:
SHOW STATUS LIKE 'Binlog_cache%';
​​Binlog_cache_disk_use の値が 0 ではないため、Binlog キャッシュのサイズが十分ではない可能性があり、binlog_cache_size システム パラメーターのサイズを増やすことができます。

Innodb_log_waits 量: Innodb_log_waits ステータス変数は、Innodb ログ バッファー内のスペース不足によって引き起こされる待機数を直接反映します。
SHOW STATUS LIKE 'Innodb_log_waits';
この変数値の発生頻度はシステムの書き込みパフォーマンスに直接影響するため、値が 1 秒あたり 1 回に達したら、システム パラメータ innodb_log_buffer_size の値を増やす必要があります。 , これはシステムによって共有されます。キャッシュが適切に増加していれば、メモリ不足の問題は発生しません。


2. 性能解析コマンドの詳細説明


SHOW STATUS;
FLUSH STATUS;

現在の接続数を表示 SHOW STATUS LIKE 'Thread_%';
Thread_cached: キャッシュされたスレッドの数
Thread_running: アクティブ化されたスレッドの数
Thread_connected: 現在接続されているスレッドの数
Thread_created: 作成されたスレッドの総数

スレッド キャッシュ ヒット数
Thread_connected = SHOW GLOBAL STATUS LIKE Thread_created;
Connections = SHOW GLOBAL STATUS LIKE 'Connections';
TCH=(1 - (Threads_created / Connections) ) * 100

View active接続内容
SHOW PROCESSLIST;

TCH数が90%未満の場合、接続の作成に時間がかかり、Thread_cached

QPS(1秒あたりのクエリ処理)の数を増やしますMyISAMエンジン

Questions = SHOW GLOBAL STATUS LIKE 'Questions';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
QPS=Questions/Uptime

TPS (1 秒あたりに送信されるトランザクション数)、つまり、1 秒あたりにサーバーによって処理されるトランザクションの数 (ある場合) InnoDB表示、InnoDBがないと表示されません。

Com_commit = 'Com_commit' のようなグローバル ステータスを表示;
Com_rollback = 'Com_rollback' のようなグローバル ステータスを表示;
Uptime = 'Uptime' のようなグローバル ステータスを表示;
TPS=(Com_commit + Com_rollback)/Uptime

QPS および TPS の値アーキテクチャを構築するときにテストのピークに近づいている場合は、神があなたとともにおられますように

読み取り/書き込み率
Qcache_hits = SHOW GLOBAL STATUS LIKE 'Qcache_hits';
Com_select = SHOW GLOBAL STATUS LIKE 'Com_select';
Com_insert = 'Com_insert' のようなグローバル ステータスを表示;
Com_update = 'Com_update' のようなグローバル ステータスを表示;
Com_delete = 'Com_delete' のようなグローバル ステータスを表示;
Com_replace = 'Com_replace' のようなグローバル ステータスを表示;
R /W=(Com_select + Qcache_hits) / (Com_insert + Com_update + Com_delete + Com_replace) * 100

読み取り/書き込み率。読み取りが多ければ読み取りが最適化され、書き込みが多ければ書き込みが最適化されます。

1 分あたりの遅いクエリ数
Slow_queries = SHOW GLOBAL STATUS LIKE 'Slow_queries';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
SQPM=Slow_queries / (Uptime/60)

Slow queries /Questions Ratio
Slow_queries = SHOW GLオーバルSTATUS LIKE 'Slow_queries';
Questions = SHOW GLOBAL STATUS LIKE 'Questions';
S/Q=Slow_queries/Questions

新しいバージョンがオンラインになるときは遅いクエリに注意してください

1分あたりのFull_join
Select_full_join = SHOW GLOBAL STATUS LIKE 'Select_full_join';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
FJPM=Select_full_join / (Uptime/60)

インデックスを使用しないことによる Full_join、インデックスを最適化

Innodb バッファ読み取りヒット数
Innodb_buffer_pool_reads = SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
Innodb_buffer_pool_read_requests = SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read_requests';
IFRH=(1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100

InnoDB バッファ ヒット率ターゲット 95 %-99%;

テーブルキャッシュ
Open_tables= SHOW GLOBAL STATUS LIKE 'Open _tables';
Opened_tables= SHOW GLOBAL STATUS LIKE 'Opened_tables';
table_cache= SHOW GLOBAL STATUS LIKE 'table_cache';

table_cache は Open_tables より大きく、Opened_tables より小さい必要があります


一時テーブルディスク比率

Created_tmp_tables = 'Created_tmp_tables' のようなグローバル ステータスを表示します;
Created_tmp_disk_tables = 'Created_tmp_disk_tables' のようなグローバル ステータスを表示します;

TDR=(Created_tmp_disk_tables/Created_tmp_tables)*100


「Innodb_row_lock_%」のようなグローバル ステータスを表示';

Innodb_row_lock_current_waits

MySQL 5.0.3 で追加された行ロックの数。

Innodb_row_lock_time

MySQL 5.0.3 での行ロックの取得に費やされた合計時間 (ミリ秒単位)。ロック時間_最大値

MySQL 5.0.3 で追加された行ロックの最大時間 (ミリ秒)。

Innodb_row_lock_waits

MySQL 5.0.3 で追加された行ロックの待機回数。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

NAVICATでデータベースパスワードを取得できますか? NAVICATでデータベースパスワードを取得できますか? Apr 08, 2025 pm 09:51 PM

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

MariadBのNAVICATでデータベースパスワードを表示する方法は? MariadBのNAVICATでデータベースパスワードを表示する方法は? Apr 08, 2025 pm 09:18 PM

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

See all articles