MySQLには、performance_
データベースがあります。その中に、events_
テーブルがあります。
以前の記事 第85回 sysスキーマの便利なストアドプロシージャやストアドファンクション
今回はMySQL 8.events_
テーブルに影響するパラメータについて紹介したいと思います。
パラメータ一覧
events_
テーブルに関するパラメータは、
- performance_
schema_ digests_ size - max_
digest_ length - performance_
schema_ max_ digest_ length - performance_
schema_ max_ digest_ sample_ age
performance_schema_digests_size
events_
はテーブル内の最大行数を設定します。デフォルト値は-1
となっていて、max_
、table_
やtable_
パラメータ値を元に1000、
現在の値を確認するにはSHOW ENGINE PERFORMANCE_
ステートメントのevents_
show variables
ステートメントから確認できます。
mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS; +--------------------+-------------------------------------------------------------+-----------+ | Type | Name | Status | +--------------------+-------------------------------------------------------------+-----------+ | performance_schema | events_statements_summary_by_digest.count | 10000 | mysql> show global variables like 'performance_schema_digests_size'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | performance_schema_digests_size | 10000 | +---------------------------------+-------+
また、
Performance_
ステータス変数がインクリメントされるschema_ digest_ lost events_
テーブルのSCHEMA_statements_ summary_ by_ digest NAMEカラムとDIGESTカラムをNULLに設定した特別な行にグループ化
mysql> SELECT COUNT(*) FROM events_statements_summary_by_digest; +----------+ | COUNT(*) | +----------+ | 10000 | +----------+ mysql> SHOW GLOBAL STATUS LIKE 'Performance_schema_digest_lost'; +--------------------------------+--------+ | Variable_name | Value | +--------------------------------+--------+ | Performance_schema_digest_lost | 313717 | +--------------------------------+--------+ mysql> SELECT SCHEMA_NAME,DIGEST,DIGEST_TEXT,COUNT_STAR FROM events_statements_summary_by_digest; +-------------+--------+------------+------------+ | SCHEMA_NAME | DIGEST | DIGEST_TEXT| COUNT_STAR | +-------------+--------+------------+------------+ | NULL | NULL | NULL | 313741 | +-------------+--------+------------+------------+
分析が必要なMySQLでPerformance_
ステータス変数が増えている場合は、
max_digest_lengthとperformance_schema_max_digest_length
max_
よって、
続いて、
それぞれを異なる値にして、
mysql> SELECT id FROM t WHERE id2=10; Empty set (0.02 sec)
mdl | p_ |
DIGEST | DIGEST_ |
---|---|---|---|
100 | 100 | 08fac3fdf9bddce9f9089244c7d76988e0f67a2967f795 98f61f92b0c8c8d312 |
SELECT id FROM t WHERE id2 = ? |
10 | 100 | 50020ff1320eba8e7345bfa76401ac511ba3434fb47d8a 12e49745c688ed431f |
SELECT id FROM |
100 | 10 | 08fac3fdf9bddce9f9089244c7d76988e0f67a2967f795 98f61f92b0c8c8d312 |
SELECT id FROM |
- mdl=max_
digest_ length - p_
s_mdl=performance_ schema_ max_ digest_ length
上記のとおり、
performance_schema_max_digest_sample_age
MySQL 8.
先ほど使用したSQLからテーブル情報を見てみましょう。
mysql> SELECT * FROM performance_schema.events_statements_summary_by_digest where DIGEST_TEXT like '%id%'\G SCHEMA_NAME: t DIGEST: 08fac3fdf9bddce9f9089244c7d76988e0f67a2967f79598f61f92b0c8c8d312 DIGEST_TEXT: SELECT `id` FROM `t` WHERE `id2` = ? 〈表示割愛〉 QUERY_SAMPLE_TEXT: SELECT id FROM t WHERE id2=10 QUERY_SAMPLE_SEEN: 2020-04-10 15:25:54.919738 QUERY_SAMPLE_TIMER_WAIT: 24271894000
このように、
- QUERY_
SAMPLE_ TEXT … サンプルのステートメント情報 - QUERY_
SAMPLE_ SEEN … ステートメントが表示された時間 - QUERY_
SAMPLE_ TIMER_ WAIT … ステートメントの待機時間または実行時間(ピコ秒)
また、
メモリ使用量
performance_SHOW ENGINE PERFORMANCE_
ステートメントのperformance_
から確認できます。パラメータを大きくする前に、
mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS; +--------------------+-------------------------------------------------------------+-----------+ | Type | Name | Status | +--------------------+-------------------------------------------------------------+-----------+ | performance_schema | performance_schema.memory | 196979216 | +--------------------+-------------------------------------------------------------+-----------+
まとめ
最近のMySQL DBAは、events_
テーブルを使用して分析することが多いと思います。これらのパラメータを考慮していただければと思います。
今回紹介した内容は26.