performance_schema_instrumentの設定方法
mysql

performance_schema_instrumentの設定方法

このエントリーをはてなブックマークに追加

こんにちは、DBAのたなかです。
前回 に引き続き、performance_schema周りで試行錯誤中です。

performance_schema.setup_consumers, performance_schema.setup_instruments あたりでp_sが取得する情報を制御するのはいいとして、コイツらはMySQLを再起動すると設定が初期値に戻ります。

そのため、performance-schema-consumer-*performance-schema-instrumentを設定して、起動時のデフォルトを設定しておく必要がありますね。

performance-schema-consumer-* の方はリファレンスマニュアルにも細かく書いてあるように、

  • performance-schema-consumer-events-stages-current= 1
  • performance-schema-consumer-events-stages-history= 1
  • performance-schema-consumer-events-stages-history-long= 1

とでもしておくと、

mysql56> SELECT * FROM performance_schema.setup_consumers;
+--------------------------------+---------+
| NAME                           | ENABLED |
+--------------------------------+---------+
| events_stages_current          | YES     |
| events_stages_history          | YES     |
| events_stages_history_long     | YES     |
| events_statements_current      | YES     |
| events_statements_history      | NO      |
| events_statements_history_long | NO      |
| events_waits_current           | NO      |
| events_waits_history           | NO      |
| events_waits_history_long      | NO      |
| global_instrumentation         | YES     |
| thread_instrumentation         | YES     |
| statements_digest              | YES     |
+--------------------------------+---------+
12 rows in set (0.06 sec)

初期状態でこうなります。

しかし、performance-schema-instrumentに関しては

・—performance-schema-instrument=instrument_name=value

Configure a Performance Schema instrument. The name may be given as a pattern to configure instruments that match the pattern.

http://dev.mysql.com/doc/refman/5.6/en/performance-schema-options.html#option_mysqld_performance-schema-instrument

わかりにくい。。

んですが、ソースコード探してたら設定例が書いてありました。

8619 /*
8620 Parse instrument name and value from argument string. Handle leading
8621 and trailing spaces. Also handle single quotes.
8622
8623 Acceptable:
8624 performance_schema_instrument = ’ foo/%/bar/ = ON ‘
8625 performance_schema_instrument = ‘%=OFF’
8626 Not acceptable:
8627 performance_schema_instrument = ” foo/%/bar = ON ”
8628 performance_schema_instrument = ‘%=’OFF”
8629 */

mysql-5.6.16/sql/mysqld.cc

これで設定してみると

  • performance-schema-instrument= ‘stage/%= 1’

こうなった。

mysql56> SELECT * FROM setup_instruments WHERE name LIKE '%stage%';
+---------------------------------------------------------------------------------------+---------+-------+
| NAME                                                                                  | ENABLED | TIMED |
+---------------------------------------------------------------------------------------+---------+-------+
| stage/sql/After create                                                                | YES     | YES   |
| stage/sql/allocating local table                                                      | YES     | YES   |
| stage/sql/preparing for alter table                                                   | YES     | YES   |
..

enabledもtimedも両方YESになる。

さて、これで残るは”threads.instrumented= ‘NO’ を全スレッドに設定しておく”をデフォルトでやる方法を調べればまあまあイケるかな。。


名無しのエンジニア
Mobile World Congress(MWC)にいってきました!
ディスプレイ環境が良くなるまでが結構色々あったお話