動作は5.7.7で確認していて、 5.7.8で暗黙のデフォルトがOFFになるって書いてある のでやってみた。
MySQL 5.7.6から show_compatibility_56 というサーバー変数が追加されている。
SHOW {GLOBAL|SESSION} STATUS, SHOW {GLOBAL|SESSION} VARIABLES は今まで内部的にinformation_schemaのテーブルを叩いていた。これをperformance_schemaのテーブルを叩くように変えるのがこのパラメーター。
ONだとinformation_schemaから、OFFだとperformance_schemaから情報を取ってくる。
mysql57> SELECT @@version; +--------------+ | @@version | +--------------+ | 5.7.7-rc-log | +--------------+ 1 row in set (0.00 sec) mysql57> SELECT @@show_compatibility_56; +-------------------------+ | @@show_compatibility_56 | +-------------------------+ | 1 | +-------------------------+ 1 row in set (0.00 sec) mysql57> SELECT COUNT(*) FROM information_schema.GLOBAL_VARIABLES; +----------+ | COUNT(*) | +----------+ | 476 | +----------+ 1 row in set, 2 warnings (0.01 sec) mysql57> SELECT COUNT(*) FROM performance_schema.global_variables; +----------+ | COUNT(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) mysql57> SHOW GLOBAL VARIABLES; .. 476 rows in set, 1 warning (0.01 sec)
これが5.7.7までのデフォルトのままの動作。
mysql57> SELECT @@show_compatibility_56; +-------------------------+ | @@show_compatibility_56 | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.00 sec) mysql57> SELECT COUNT(*) FROM information_schema.GLOBAL_VARIABLES; +----------+ | COUNT(*) | +----------+ | 0 | +----------+ 1 row in set, 1 warning (0.00 sec) mysql57> SELECT COUNT(*) FROM performance_schema.global_variables; +----------+ | COUNT(*) | +----------+ | 475 | +----------+ 1 row in set (0.00 sec) mysql57> SHOW GLOBAL VARIABLES; .. 475 rows in set (0.00 sec)
これが、5.7.8からの暗黙のデフォルトでの動作。
件数が微妙に違うのはいいとして(?)、その他ちょこちょこと。
* performance_schemaをOFFにしてると怒られる。
mysql57> SELECT @@performance_schema; +----------------------+ | @@performance_schema | +----------------------+ | 0 | +----------------------+ 1 row in set (0.00 sec) mysql57> SELECT @@show_compatibility_56; +-------------------------+ | @@show_compatibility_56 | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.00 sec) mysql57> SHOW STATUS; ERROR 1286 (42000): Unknown storage engine 'PERFORMANCE_SCHEMA'
performance_schema= 0だったらshow_compatibility_56= 0できないようにしてほしい(´・ω・`)
* performance_schemaのテーブルに対するSELECT権限が必要。
mysql57> SHOW GRANTS; +--------------------------------------+ | Grants for yoku0825@% | +--------------------------------------+ | GRANT USAGE ON *.* TO 'yoku0825'@'%' | +--------------------------------------+ 1 row in set (0.00 sec) mysql57> SHOW STATUS; ERROR 1142 (42000): SELECT command denied to user 'yoku0825'@'localhost' for table 'session_status'
information_schemaへのアクセスを制限するものはなかったけれど、performance_schemaはフツーのdbと同じくGRANTの制限を受けるのでこうなる。
さてさて…自作スクリプトでinformation_schema.GLOBAL_STATUSとか当たってるんだけどどうしようかな。。あと、GRANTの方はどこかで引っかかりそうな気がする。監視用ユーザーとか。
忘れないようにしておかないと(´・ω・`)
0 件のコメント :
コメントを投稿