5. 例: VIEWの変更箇所 (innodb_lock_waits)
FROM
((((`information_schema`.`innodb_lock_waits` `w`
JOIN `information_schema`.`innodb_trx` `b` ON ((`b`.`trx_id` = `w`.`blocking_trx_id`)))
JOIN `information_schema`.`innodb_trx` `r` ON ((`r`.`trx_id` = `w`.`requesting_trx_id`)))
JOIN `information_schema`.`innodb_locks` `bl` ON ((`bl`.`lock_id` = `w`.`blocking_lock_id`)))
JOIN `information_schema`.`innodb_locks` `rl` ON ((`rl`.`lock_id` = `w`.`requested_lock_id`)))
ORDER BY `r`.`trx_wait_started`
FROM
((((`performance_schema`.`data_lock_waits` `w`
JOIN `information_schema`.`INNODB_TRX` `b` ON ((CONVERT( `b`.`trx_id` USING UTF8MB4) = CAST(`w`.`BLOCKING_ENGINE_TRANSACTION_ID` AS CHAR CHARSET UTF8MB4))))
JOIN `information_schema`.`INNODB_TRX` `r` ON ((CONVERT( `r`.`trx_id` USING UTF8MB4) = CAST(`w`.`REQUESTING_ENGINE_TRANSACTION_ID` AS CHAR CHARSET UTF8MB4))))
JOIN `performance_schema`.`data_locks` `bl` ON ((`bl`.`ENGINE_LOCK_ID` = `w`.`BLOCKING_ENGINE_LOCK_ID`)))
JOIN `performance_schema`.`data_locks` `rl` ON ((`rl`.`ENGINE_LOCK_ID` = `w`.`REQUESTING_ENGINE_LOCK_ID`)))
ORDER BY `r`.`trx_wait_started`
MySQL5.7.21
MySQL8.0.11
6. host_summaryおよびx$host_summary
root@localhost [sys]> SELECT * FROM sys.host_summary limit 1G
*************************** 1. row ***************************
host: 192.168.56.1
statements: 293
statement_latency: 798.93 ms
statement_avg_latency: 2.73 ms
table_scans: 28
file_ios: 39
file_io_latency: 159.38 ms
current_connections: 0
total_connections: 2
unique_users: 1
current_memory: 300.96 KiB
total_memory_allocated: 97.71 MiB
1 row in set (0.02 sec)
root@localhost [sys]>
SQLステートメントのアクティビティ、ファイルI / O、および接続をホスト別にまとめたものです。
データベースに接続してSQLステートメントを実行しているホストが、
ファイルI/Oやメモリーをどれだけ発生させているか確認出来ます。
どのホスト処理が負荷をかけているか容易に確認可能です。
7. host_summary_by_file_ioおよび x$host_summary_by_file_io
root@localhost [sys]> SELECT * FROM sys.host_summary_by_file_io limit 3G
*************************** 1. row ***************************
host: background
ios: 1792
io_latency: 5.12 s
*************************** 2. row ***************************
host: localhost
ios: 285
io_latency: 943.07 ms
*************************** 3. row ***************************
host: 192.168.56.1
ios: 39
io_latency: 159.38 ms
3 rows in set (0.00 sec)
root@localhost [sys]>
ファイルI/Oをホストごとにまとめたものです。
デフォルトでは、ファイルI/O全体のレイテンシが降順に並べ替えられて行がソートされます。
データベースに接続しているホストが、ファイルI/Oをどれだけ発生させ
ているか確認出来ます。どのホスト処理がI/O負荷をかけているか容易
に確認可能です。
8. host_summary_by_file_io_typeとx$host_summary_by_file_io_type
root@localhost [sys]> SELECT * FROM sys.host_summary_by_file_io_type limit 2G
*************************** 1. row ***************************
host: background
event_name: wait/io/file/innodb/innodb_data_file
total: 1528
total_latency: 1.66 s
max_latency: 81.06 ms
*************************** 2. row ***************************
host: background
event_name: wait/io/file/innodb/innodb_log_file
total: 37
total_latency: 45.17 ms
max_latency: 18.18 ms
2 rows in set (0.00 sec)
root@localhost [sys]>
ファイルI/Oをホストとイベントのタイプ別にまとめたものです。
デフォルトでは、行はホストごとにソートされ、合計I/Oレイテンシは降順にソートされます。
データベースに接続しているホストが、ファイルI/Oをどれだけ発生させて
いるか確認出来ます。EVENT_NAMEは計測された値を示しています。
9. host_summary_by_stagesおよびx$host_summary_by_stages
root@localhost [sys]> SELECT * FROM sys.host_summary_by_stages limit 1G
*************************** 1. row ***************************
host: background
event_name: stage/innodb/buffer pool load
total: 1
total_latency: 21.87 ms
avg_latency: 21.87 ms
1 row in set (0.00 sec)
root@localhost [sys]>
ステートメントのステージをホストごとにまとめたものです。
デフォルトで、行はホストごとにソートされ、合計レイテンシは降順にソートされます。
ステートメントがどのような状態にあるか、ホスト毎に確認可能です。
処理に時間がかかっている処理順にソートされているため、
ステージ毎に重い処理を特定することが可能です。
10. host_summary_by_statement_latencyおよび
x$host_summary_by_statement_latency
root@localhost [sys]> SELECT * FROM sys.host_summary_by_statement_latency limit 1G
*************************** 1. row ***************************
host: localhost
total: 259
total_latency: 147.37 ms
max_latency: 22.52 ms
lock_latency: 101.21 ms
rows_sent: 118
rows_examined: 2758
rows_affected: 0
full_scans: 5
1 row in set (0.00 sec)
root@localhost [sys]>
ホストごとにサマライズされた、全体的なステートメント統計を要約します。
デフォルトで、行は合計レイテンシを降順にソートされます。
ホスト毎にステートメントの遅延状態を確認する事が可能です。
処理に時間がかかっているステートメント順にソートされているため、
時間のかかっているステートメントを容易に特定することが可能です。
24. memory_global_totalおよびx$memory_global_total
root@localhost [sys]> SELECT * FROM sys.memory_global_total limit 2G
*************************** 1. row ***************************
total_allocated: 251.08 MiB
1 row in set (0.00 sec)
root@localhost [sys]>
サーバー内の合計メモリー使用量を要約します。
MySQL全体で利用しているメモリー量の合計を確認出来ます。
搭載されているメモリーと合わせて調整してみてください。
25. metrics
root@localhost [sys]> SELECT * FROM sys.metrics where Variable_name like 'innodb%' limit 10;
+----------------------------------+--------------------------------------------------+---------------+---------+
| Variable_name | Variable_value | Type | Enabled |
+----------------------------------+--------------------------------------------------+---------------+---------+
| innodb_buffer_pool_bytes_data | 24608768 | Global Status | YES |
| innodb_buffer_pool_bytes_dirty | 65536 | Global Status | YES |
| innodb_buffer_pool_dump_status | Dumping of buffer pool not started | Global Status | YES |
| innodb_buffer_pool_load_status | Buffer pool(s) load completed at 180510 0:55:56 | Global Status | YES |
| innodb_buffer_pool_pages_data | 1502 | Global Status | YES |
| innodb_buffer_pool_pages_dirty | 4 | Global Status | YES |
| innodb_buffer_pool_pages_flushed | 639 | Global Status | YES |
| innodb_buffer_pool_pages_free | 6679 | Global Status | YES |
| innodb_buffer_pool_pages_misc | 11 | Global Status | YES |
| innodb_buffer_pool_pages_total | 8192 | Global Status | YES |
+----------------------------------+--------------------------------------------------+---------------+---------+
10 rows in set (0.01 sec)
MySQLサーバのメトリックを、変数、値、タイプ毎にまとめ、それらが有効かどうかを 表示します。
デフォルトで、行は変数の型と名前でソートされます
SHOW VARIABLES等で確認可能な現状の設定値を確認可能です。