SYSシステムライブラリ注() - 導入およびクイックスタート

「MySQLのパフォーマンスの最適化ピラミッド法」を参照して一連の記事は、書籍を削除し、繰り返しの説明は、いくつかの説明は、元の本の完全版を参照してくださいあまりにも複雑です。

、performance_schemaライブラリシステムを提示したノートのシリーズの前で理由の一つの前にそれを置くことは、データSYSシステムライブラリのソースであるためです。このシリーズはに基づいているのMySQL 5.7.18バージョン仕上げ

 

A、SYSシステムライブラリの前提

SYSシステムライブラリを使用する前に、我々は、データベース環境は、以下の条件を満たしていることを確認する必要があります。

バージョン1)のMySQL 5.6以上

2)启用performance_schema(performance_schema = ON)

3)SYSシステムライブラリへの完全なアクセス権を持っているために、ユーザは、次の権限を持っている必要があります。

  • すべてのテーブルとビューのsys上の権限を選択
  • SYSがすべてのストアドプロシージャや関数にEXECUTE権限を持っています
  • 持ってINSERT、テーブルsys_configのUPDATE権限
  • 特定のライブラリのストアドプロシージャおよび関数のSYSシステムは、例えば、ps_setup_save()ストアドプロシージャは一時テーブルに関連する権利を必要とする追加の特権を必要と

4)SYSシステム・ライブラリへのアクセス許可を実行するためにオブジェクトに関連付けられています

  • どれperformance_schemaテーブルがSYSアクセスされたシステムライブラリは、SELECT権限を持っている必要があり、更新を実行するためにperformance_schema関連する表は、sysシステムライブラリを使用するには、performance_schema関連テーブルのUPDATE権限を必要とします
  • PROCESS権限のINFORMATION_SCHEMA.INNODB_BUFFER_PAGEテーブル

5)あなたが楽器や消費者の特定のperformance_schemaを有効にする必要があり、完全な機能SYSシステムライブラリを使用するには:

  • すべての待機楽器
  • すべてのステージの楽器
  • すべてのステートメントの楽器
  • 楽器のためにも、あなたは、消費者(xxx_currentとxxx_history_long)の対応するタイプを有効にする必要があり、イベントの種類を有効に

あなたはすべての楽器と消費者の必要性を可能にするため、SYSシステムライブラリを使用することができます(詳細ストアドプロシージャは、プロシージャPROCEDURE_NAMEを作成表示することができ、文を参照してください):

  • 启用所有待機楽器:CALLのsys.ps_setup_enable_instrument( '待ち');
  • すべてのステージの楽器を有効にします。CALL sys.ps_setup_enable_instrument(「段階」);
  • すべての文の楽器を有効にします。CALL sys.ps_setup_enable_instrument(「ステートメントを」);
  • 現在のイベントテーブルのすべてのタイプを有効にします。CALLのsys.ps_setup_enable_consumer(「電流」);
  • ( 'history_long')CALLのsys.ps_setup_enable_consumer;:すべてのイベントタイプhistory_longテーブルを有効にします

注意:

デフォルトの設定performance_schemaは、データ収集SYSシステムライブラリのほとんどを満たすことができます。すべての楽器とパフォーマンスはそれだけで必要な設定を可能にするのが最善である、影響力を持って言及した上で、消費者が有効になります。あなたは、CALLのsys.ps_setup_reset_to_default(TRUE)を使用することができ、迅速performance_schemaのデフォルト設定に戻します。

より複雑なアクセス許可の要件については、あなたは通常、あなたが明確な需要を持っている場合、それはまた別の問題ですが、SYSシステムライブラリは通常、特定の問題のトラブルシューティングに使用するDBAに提供され、当然のことながら、管理者権限を持つアカウントを作成できます問い合わせは、パフォーマンスに何らかの影響を与える多かれ少なかれ関与の下で(主として実現パフォーマンスオーバーヘッドperformance_schema機能に反映)、未知の要求の場合には、監視のルーチンの手段として使用するこれらの機能を開くことが推奨されません。

 

二、SYSシステムライブラリ初めての経験

次のようにして、ライブラリ内のルックアップテーブルとして、直接お問い合わせSYSシステムライブラリの下に表示する切り替えることができます。

# version视图可以查看sys 系统库和mysql server的版本号
mysql> USE sys;
mysql> SELECT * FROM version;
+ ------------- + ----------------- +
| sys_version | mysql_version |
+ ------------- + ----------------- +
| 1.5.0 | 5.7.9-debug-log |
+ ------------- + ----------------- +

sysが、多くのビューに図書館システムが含まれ、重合はperformance_schemaテーブルを表示するために、様々な方法で計算されます。そのほとんどが、ペアで例えば2つの同じ名前のビューが、ビューと「X $」文字の接頭辞、以下のとおりです。host_summary_by_file_ioと、2ファイルI / Oのパフォーマンス・データに基づいてホストの代わりに$ host_summary_by_file_io、要約統計量をxはアクセスデータソースビューが同じであるが、ビュー文を作成し、X $せずにビューが再表示ユニット変換された相関値データであり、ビュー番組、生データ(ピコ秒)で$プレフィックスをxは。

# 输出信息经过单位换算,可读性更高
mysql> SELECT * FROM host_summary_by_file_io;
+------------+-------+------------+
| host      | ios  | io_latency |
+------------+-------+------------+
| localhost  | 67570 | 5.38 s    |
| background |  3468 | 4.18 s    |
+------------+-------+------------+

# 带x$的视图显示原始的皮秒单位数值,对于程序或工具获取使用更易于数据处理
mysql> SELECT * FROM x$host_summary_by_file_io;
+------------+-------+---------------+
| host      | ios  | io_latency    |
+------------+-------+---------------+
| localhost  | 67574 | 5380678125144 |
| background |  3474 | 4758696829416 |
+------------+-------+---------------+

SYSシステムライブラリオブジェクト定義文を参照してくださいするには、適切なSHOWステートメントまたはINFORMATION_SCHEMAクエリを使用することができます。

mysql> SHOW CREATE VIEW session;
mysql> SHOW CREATE FUNCTION format_bytes;

より読みやすい形式のオブジェクト定義文を表示するには、さまざまな.SQLデータベース開発システムSYSウェブサイトhttps://github.com/mysql/mysql-sys上のファイルにアクセス、またはエクスポートとmysqlpump SYSライブラリデフォルトにmysqldumpをツールを使用することができます、mysqldumpをとmysqlpumpは、SYSシステムライブラリをエクスポートされません。エクスポートファイルはSYSライブラリシステムが含まれて生成するには、次のコマンドは、明示的にSYSシステムライブラリを指定するために使用することができます。あなたはビュー定義をエクスポートすることができますが、オリジナルの定義文に比べて、まだコンテンツのかなりの部分欠けているが、読みやすさだけで直接ビューを作成して表示さよりも優れています:

mysqldump --databases --routines sys> sys_dump.sql
mysqlpump sys> sys_dump.sql
# 如果要重新导入sys 系统库,可以使用如下命令:
mysql < sys_dump.sql

 

進捗状況を報告する第三に、トランザクション

MySQLの5.7.9、SYSシステムライブラリビュー長時間実行されるトランザクションの進捗状況報告書を提供し、PROCESSLISTセッションとビューを通して見たがPROCESSLIST背景と前景スレッド現在のイベント情報が含まれている$接頭辞を、xは開始、セッションが含まれていませんスレッドおよびコマンドにデーモンバックグラウンドスレッドは、次の通り:

processlist
session
x$processlist
x$session

セッションビューは直接PROCESSLISTビューを呼び出し、デーモンスレッドにバックグラウンドスレッドコマンドをフィルタリングします。

それ以外の場合はtrx_stateのために、フィールドをNULLである列に対応する情報フィールドを開くことができませんでした適切な機器や消費者、開く必要そうクエリスレッドを結ぶPROCESSLISTスレッド、events_waits_current、events_stages_current、events_statements_current、events_transactions_current、sys.x $ memory_by_thread_by_current_bytes、session_connect_attrsテーブル、 ACTIVEスレッドに、進行状況を出力することができる割合進捗情報が、唯一のイベントの進行をサポートするには、カウントされ、印刷されます。

-- 查看当前正在执行的语句进度信息
select * from session where conn_id!=connection_id() and trx_state='ACTIVE'\G;

*************************** 1. row ***************************
            thd_id: 47
          conn_id: 5
              user: admin@localhost
                db: sbtest
          command: Query
            state: alter table (merge sort)
              time: 29
current_statement: alter table sbtest1 add index i_c(c)
statement_latency: 29.34 s
          progress: 49.70  ------ 进度
      lock_latency: 4.34 ms
    rows_examined: 0
        rows_sent: 0
    rows_affected: 0
        tmp_tables: 0
  tmp_disk_tables: 0
        full_scan: NO
    last_statement: NULL
last_statement_latency: NULL
    current_memory: 4.52 KiB
        last_wait: wait/io/file/innodb/innodb_temp_file
last_wait_latency: 369.52 us
            source: os0file.ic:470
      trx_latency: 29.45 s
        trx_state: ACTIVE
    trx_autocommit: YES
              pid: 4667
      program_name: mysql
1 row in set (0.12 sec)


-- 查看已经执行完的语句相关统计信息
select * from session where conn_id!=connection_id() and trx_state='COMMITTED'\G;

*************************** 1. row ***************************
            thd_id: 47
          conn_id: 5
              user: admin@localhost
                db: sbtest
          command: Sleep
            state: NULL
              time: 372
current_statement: NULL
statement_latency: NULL
          progress: NULL ------ 已执行完、未启用、不支持进度显示的为null
      lock_latency: 4.34 ms
    rows_examined: 0
        rows_sent: 0
    rows_affected: 0
        tmp_tables: 0
  tmp_disk_tables: 0
        full_scan: NO
    last_statement: alter table sbtest1 add index i_c(c)
last_statement_latency: 1.61 m
    current_memory: 4.52 KiB
        last_wait: idle
last_wait_latency: Still Waiting
            source: socket_connection.cc:69
      trx_latency: 1.61 m
        trx_state: COMMITTED
    trx_autocommit: YES
              pid: 4667
      program_name: mysql
1 row in set (0.12 sec)

ステージイベントレポートの要件を進めるためには、関連する機器の進行状況を表示するために有効にする必要がevents_stages_current消費者を有効にする必要があります。例えば:

stage/sql/Copying to tmp table
stage/innodb/alter table (end)
stage/innodb/alter table (flush)
stage/innodb/alter table (insert)
stage/innodb/alter table (log apply index)
stage/innodb/alter table (log apply table)
stage/innodb/alter table (merge sort)
stage/innodb/alter table (read PK and internal sort)
stage/innodb/buffer pool load

ステージイベントのスケジュールがサポートまたは必須の器具又は消費者を有効になっていないため、対応する列が表示されNULLに情報を進行します。

 

その他のリファレンス

https://dev.mysql.com/doc/refman/5.7/en/sys-schema-progress-reporting.html

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

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

公開された295元の記事 ウォン称賛35 ビュー80000 +

おすすめ

転載: blog.csdn.net/Hehuyi_In/article/details/105314757