その他のその他の見解| sysシステムライブラリの包括的な理解

では、「統計効率統計ビュー| A総合はSYSシステムライブラリの理解」、私たちは、SYSシステムライブラリを使用してクエリ文の実行効率のクイックビューを導入し、この問題は、いくつかの不便分類混合意見を紹介します。ビューを紹介するシリーズの最後の記事。

PS:この記事で説明したビュー機能の特殊性により(DBAは、日常業務でのデータ分析のために情報を照会する必要がある場合があります)、一部のビューのselectステートメントのテキストを以下にリストして、誰もがより直感的に理解できるようにします。学ぶ。


01

メトリック

Innodbの一部の内部メトリック、グローバルステータス変数、現在のシステム時間などのサーバーカウントインジケーター。デフォルトでは、変数のタイプと名前で並べ替えられます。データソース:performance_schemaのglobal_status、memory_summary_global_by_event_name、information_schema.innodb_metrics、NOW()、UNIX_TIMESTAMP()関数

  • ビューには、
    *グローバルステータス変数名とperformance_schema.global_statusテーブルの統計値
    から* innodbインジケーター変数とinformation_schema.innodb_metricsテーブルの統計値
    から* performance_schemaメモリモニタリングの現在の割り当ての合計 から の情報の次の部分が含まれています 割り当てられたメモリ統計の履歴の合計 
    は、*現在のシステム時間から
    取得されます(読み取り可能な形式のunixタイムスタンプを使用)  * PS:global_statusテーブルとinnodb_metricsテーブルの間に重複した統計があり、メトリックビューで重複があります

  • このビューはMySQL5.7.9で追加されました

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 10:49:59> select * from metrics where type='global status' limit 5;
+----------------------------+----------------+---------------+---------+
| Variable_name              | Variable_value | Type          | Enabled |
+----------------------------+----------------+---------------+---------+
| aborted_clients            | 0              | Global Status | YES    |
| aborted_connects          | 0              | Global Status | YES    |
| binlog_cache_disk_use      | 0              | Global Status | YES    |
| binlog_cache_use          | 1159          | Global Status | YES    |
| binlog_stmt_cache_disk_use | 0              | Global Status | YES    |
+----------------------------+----------------+---------------+---------+
5 rows in set (0.17 sec)

admin@localhost : sys 11:04:01> select * from metrics where type='InnoDB Metrics - transaction' limit 5;
+---------------------------+----------------+------------------------------+---------+
| Variable_name            | Variable_value | Type                        | Enabled |
+---------------------------+----------------+------------------------------+---------+
| trx_active_transactions  | 0              | InnoDB Metrics - transaction | NO      |
| trx_commits_insert_update | 0              | InnoDB Metrics - transaction | NO      |
| trx_nl_ro_commits        | 0              | InnoDB Metrics - transaction | NO      |
| trx_rollbacks            | 0              | InnoDB Metrics - transaction | NO      |
| trx_rollbacks_savepoint  | 0              | InnoDB Metrics - transaction | NO      |
+---------------------------+----------------+------------------------------+---------+
5 rows in set (0.02 sec)

ビューフィールドの意味は次のとおりです。

  • Variable_name:メトリック変数の名前、メトリック変数のタイプによってデータのソースが決まります 
    *グローバル状態変数の場合、このフィールド値はperformance_schema.global_statusテーブルのVARIABLE_NAME列に対応します 
    * innodbインジケーター変数の場合、このフィールド値はinformation_schema.innodb_metricsテーブルのNAME列に対応します 
    * performance_schemaからのメモリ監視メトリックの場合、メトリックビューによって提供されるmemory_current_allocatedを使用して現在のメモリ使用量を表し、memory_total_allocatedを使用して履歴メモリ割り当ての合計を表します。
    *システムタイムスタンプメトリックの場合、now()およびunix_timestamp(now())によって生成されたunixを使用します。 時間とタイムスタンプをフォーマットします

  • Variable_value:変数値を測定します。メトリック変数のタイプによって、データのソースが決まります。 
    *グローバルステータス変数の場合:このフィールドはperformance_schema.global_statusテーブルのVARIABLE_VALUE列に対応します 
    * InnoDBインジケーター変数の場合:このフィールドはinformation_schema.INNODB_METRICSテーブルのCOUNT列に対応します 
    * performance_schemaのメモリの場合モニタリングインジケータ、現在のメモリ使用量、および過去のメモリ割り当ての合計。それぞれ、performance_schema.memory_summary_global_by_event_nameテーブルのCURRENT_NUMBER_OF_BYTES_USEDとSUM_NUMBER_OF_BYTES_ALLOCを合計します。 
    *現在の時間値の場合:now()とunix_timestamp(unix())を使用して生成します。そしてタイムスタンプ

  • タイプ:メトリック変数タイプ: 
    *グローバルステータス変数の場合:この列の値は「グローバルステータス」です
    * InnoDBメトリックの場合:この列の値は「  InnoDBメトリック-%」です。%記号は、対応するメトリック変数インジケーターを出力するときにinformation_schemaを使用します。 .INNODB_METRICSテーブルのSUBSYSTEM列の値が置き換えられ、出力されます(変換関数:CONCAT( 'InnoDB Metrics-'、SUBSYSTEM)AS Type) 
    * performance_schemaで監視されるメモリインジケーターの場合:列の値は 'Performance Schema'です 
    *現在のシステム時間の場合:列の値は「システム時間」です

  • 有効:測定変数が有効かどうか 
    *グローバルステータス変数の場合:列の値は常に「はい」として表示されます 
    * InnoDBインジケーターの場合:information_schema.INNODB_METRICSテーブルのSTATUS列が有効な場合、列の値は「はい」として表示されます。 'No' 
    *メモリ測定の場合:この列の可能な値はNO、YES、PARTIALです(現在、PARTIALはメモリインジケータにのみ使用されます。つまり、すべてのメモリ監視インジケータが有効になっていません。performance_schemaで始まるすべてのメモリ監視インジケータはデフォルトで有効になっています。閉じることはできません) 
    *現在のシステム時間の場合:この列の値は常に「はい」と表示されます

PS:メトリックメトリックビューに関しては、information_schemaの下のinnodb_metricsテーブルが含まれます。このテーブルには、Innodbエンジンのいくつかのきめ細かい測定単位が記録され、そのほとんどはデフォルトでオフになっています。innodb_monitor_disable、innodb_monitor_enable、innodb_monitor_reset、innodb_monitor_reset_allを使用して、いくつかのシステムパラメータを有効にできます。 、閉じる、カウントのリセット、およびその他の操作。詳細については、リンクを参照してください。

  • https://dev.mysql.com/doc/refman/5.7/en/innodb-metrics-table.html

  • https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_monitor_reset

02

ps_check_lost_instrumentation

ユーザーは、監視を失った機器に対応する状態変数の値を照会します。null以外の値が見つかった場合は、performance_schemaで監視できない実行状態データがあることを意味します。データソース:performance_schema.global_status

クエリテキストを表示

SELECT variable_name, variable_value
FROM performance_schema.global_status
WHERE variable_name LIKE 'perf%lost'
AND variable_value > 0;

このビューを使用して、クエリによって返される結果を見てみましょう。

# 默认设置值可能很难出现监控丢失的情况,如果你需要查看到该视图输出结果,你可以通过调整相关系统变量阀值来实现
admin@localhost : sys 11:11:20> select * from ps_check_lost_instrumentation;
+----------------------------------------+----------------+
| variable_name | variable_value |
+----------------------------------------+----------------+
| Performance_schema_rwlock_classes_lost | 1 |
+----------------------------------------+----------------+
1 row in set (0.00 sec)

ビューフィールドの意味は次のとおりです。

  • variable_name:どのタイプの機器監視が失われたかを示す「performance_schema」の状態変数の名前

  • variable_value:機器の監視を失った状態変数の名前に対応する値

03

session_ssl_status

SSLリンクステータス情報(SSLバージョン、パスワード、および再利用されたSSLセッションの数を表示)、データソースの表示:performance_schema.status_by_thread

  • このビューはMySQL5.7.9で追加されました

クエリテキストを表示

SELECT sslver.thread_id,
  sslver.variable_value ssl_version,
  sslcip.variable_value ssl_cipher,
  sslreuse.variable_value ssl_sessions_reused
FROM performance_schema.status_by_thread sslver
LEFT JOIN performance_schema.status_by_thread sslcip
ON (sslcip.thread_id=sslver.thread_id and sslcip.variable_name='Ssl_cipher')
LEFT JOIN performance_schema.status_by_thread sslreuse
ON (sslreuse.thread_id=sslver.thread_id and sslreuse.variable_name='Ssl_sessions_reused')
WHERE sslver.variable_name='Ssl_version';

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 12:45:27> select * from session_ssl_status;
+-----------+-------------+------------+---------------------+
| thread_id | ssl_version | ssl_cipher | ssl_sessions_reused |
+-----------+-------------+------------+---------------------+
|        45 |            |            | 0                  |
|        46 |            |            | 0                  |
|        47 |            |            | 0                  |
|        48 |            |            | 0                  |
|        49 |            |            | 0                  |
+-----------+-------------+------------+---------------------+
5 rows in set (0.00 sec)

ビューフィールドの意味は次のとおりです。

  • thread_id:接続のスレッドID

  • SSL_VERSION:接続に使用されるSSLバージョン

  • ssl_cipher:接続に使用されるSSL暗号。クライアントがssl接続を使用する場合、接続によって照会されるセッションレベルは、「DHE-RSA-AES128-GCM-SHA256」のような文字列値を持ちます。

  • ssl_sessions_reused:接続によって再利用されたSSLセッションの数(ssl接続はキャッシュされ、ssl接続をサポートする他のクライアントによって再利用できます)

04

バージョン

現在のsysシステムライブラリとMySQLサーバーのバージョン、データソースを表示します。ビュー定義ステートメントで同様のselect '1.5.1'固定値とversion()関数の出力

クエリテキストを表示

SELECT '1.5.1' AS sys_version,
    version() AS mysql_version;

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 12:57:53> select * from version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 1.5.1      | 5.7.18-log    |
+-------------+---------------+
1 row in set (0.00 sec)

ビューフィールドの意味は次のとおりです。

  • sys_version:sysシステムライブラリバージョン

  • mysql_version:MySQLサーバーのバージョン

05

x $ ps_digest_95th_percentile_by_avg_us

ヘルプビュー(アシスタントの試行)は、ステートメントの95%の平均実行時間分布値を計算し、ヘルプstatements_with_runtimes_in_95th_percentileビューは、平均実行時間が平均分布値の95%を超えるステートメントの統計情報を出力し、デフォルトでヒストグラムのパーセンテージ値でソートされます。データソース:performance_schema.events_statements_summary_by_digest、sys.x $ ps_digest_avg_latency_distribution

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 12:59:57> select * from x$ps_digest_95th_percentile_by_avg_us;
+--------+------------+
| avg_us | percentile |
+--------+------------+
| 450384 |    0.9528 |
+--------+------------+
1 row in set (0.02 sec)

ビューフィールドの意味は次のとおりです。

  • avg_us:ステートメントの平均実行時間(マイクロ秒単位)

  • パーセンタイル:ステートメントの平均実行時間の分布スパンを表す、ヒストグラムのパーセンテージ値

06

x $ ps_digest_avg_latency_distribution

ヘルプビュー(支援された試行)、x $ ps_digest_95th_percentile_by_avg_usビューがステートメントの平均実行時間分布値の95%を生成するのを支援するために使用されます、データソース:performance_schema.events_statements_summary_by_digest

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 01:00:38> select * from x$ps_digest_avg_latency_distribution limit 3;
+-----+--------+
| cnt | avg_us |
+-----+--------+
|  2 |    38 |
|  1 |    43 |
|  1 |    57 |
+-----+--------+
3 rows in set (0.00 sec)

ビューフィールドの意味は次のとおりです。

  • cnt:ステートメントの平均実行時間に応じたグループ化カウント値

  • avg_us:ステートメントの平均実行時間(マイクロ秒単位)

07

x $ ps_schema_table_statistics_io

ヘルプビュー(支援の試み)、schema_table_statistics、x $ schema_table_statistics、schema_table_statistics_with_buffer、x $ schema_table_statistics_with_bufferテーブル統計ビューを支援してテーブル統計を生成するために使用、データソース:performance_schema.file_summary_by_instance

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 01:00:42> select * from x$ps_schema_table_statistics_io limit 3;
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
| table_schema    | table_name      | count_read | sum_number_of_bytes_read | sum_timer_read | count_write | sum_number_of_bytes_write | sum_timer_write | count_misc | sum_timer_misc |
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
| @5c0f@841d@535c | @5c0f@841d@535c |        11 |                  115897 |    40409405625 |          0 |                        0 |              0 |        11 |    6395506125 |
| binlog          | mysql-bin      |        279 |                  411513 |    4898542125 |        459 |                    408800 |      9443458500 |        455 |  2049668827875 |
| charsets        | Index          |          1 |                    18710 |    16713311625 |          0 |                        0 |              0 |          2 |      83737125 |
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
3 rows in set (0.01 sec)

ビューフィールドの意味は次のとおりです。

  • table_schema:table_nameを含むスキーマの名前

  • table_name:テーブル名

  • count_read:対応するテーブルのファイル読み取りI / Oイベントの合計発生数

  • sum_number_of_bytes_read:テーブルに対応するファイル読み取りI / Oイベントの合計バイト数

  • sum_timer_read:対応するテーブルのファイル読み取りI / Oイベントの合計遅延時間(実行時間)

  • count_write:テーブルに対応するファイル書き込みI / Oイベントの合計発生数

  • sum_number_of_bytes_write:テーブルに対応するファイル書き込みI / Oイベントの合計バイト数

  • sum_timer_write:対応するテーブルのファイル書き込みI / Oイベントの合計遅延時間(実行時間)

  • count_misc:対応するテーブルでのファイルのその他のI / Oイベントの発生の総数

  • sum_timer_misc:対応するテーブルのファイルその他のI / Oイベントの合計遅延時間(実行時間)

08

x $ schema_flattened_keys

ヘルプビュー、schema_redundant_indexesビューの出力冗長インデックス情報、データソースを支援するために使用:INFORMATION_SCHEMA.STATISTICS

このビューを使用して、クエリによって返される結果を見てみましょう。

admin@localhost : sys 01:01:20> select * from x$schema_flattened_keys limit 3;
+--------------+-------------+-------------------+------------+----------------+---------------+
| table_schema | table_name  | index_name        | non_unique | subpart_exists | index_columns |
+--------------+-------------+-------------------+------------+----------------+---------------+
| luoxiaobo    | public_num  | PRIMARY          |          0 |              0 | id            |
| luoxiaobo    | public_num  | public_name_index |          0 |              0 | public_name  |
| luoxiaobo    | t_luoxiaobo | PRIMARY          |          0 |              0 | id            |
+--------------+-------------+-------------------+------------+----------------+---------------+
3 rows in set (0.00 sec)

ビューフィールドの意味は次のとおりです。

  • TABLE_SCHEMA:インデックステーブルを含むスキーマの名前

  • TABLE_NAME:インデックスを含むテーブルの名前

  • INDEX_NAME:インデックス名

  • NON_UNIQUE:インデックス内の一意でない列の数

  • subpart_exists:インデックスがプレフィックスインデックスであるかどうか

  • index_columns:インデックス内の列名

この号の内容はここで紹介されており、この号の参照リンクは次のとおりです。

https://dev.mysql.com/doc/refman/5.7/en/sys-metrics.html

https://dev.mysql.com/doc/refman/5.7/en/sys-ps-check-lost-instrumentation.html

https://dev.mysql.com/doc/refman/5.7/en/sys-session-ssl-status.html

https://dev.mysql.com/doc/refman/5.7/en/sys-version.html

|作者について

LuoXiaobo・データベーステクノロジーエキスパート

「千の金のレシピ-MySQLパフォーマンス最適化ピラミッドルール」、「データエコロジー:MySQLレプリケーションテクノロジーとプロダクションプラクティス」の著者の1人。MySQLアーキテクチャに精通し、オープンソーステクノロジーに特化するなど、データベース全体のチューニングに精通し、オープンソーステクノロジーの推進に熱心であり、オンラインおよびオフラインで多くの公開データベーストピック共有を行い、100近くのデータベース関連の研究記事を公開しています。

全文は終わりました。

MySQLをお楽しみください:)

TeacherYeの「MySQLCoreOptimization」クラスがMySQL8.0にアップグレードされました。コードをスキャンして、MySQL8.0の練習の旅を始めてください。

おすすめ

転載: blog.csdn.net/n88Lpo/article/details/110411916