動作は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から情報を取ってくる。
これが5.7.7までのデフォルトのままの動作。
これが、5.7.8からの暗黙のデフォルトでの動作。
件数が微妙に違うのはいいとして(?)、その他ちょこちょこと。
* performance_schemaをOFFにしてると怒られる。
performance_schema= 0だったらshow_compatibility_56= 0できないようにしてほしい(´・ω・`)
* performance_schemaのテーブルに対するSELECT権限が必要。
information_schemaへのアクセスを制限するものはなかったけれど、performance_schemaはフツーのdbと同じくGRANTの制限を受けるのでこうなる。
さてさて…自作スクリプトでinformation_schema.GLOBAL_STATUSとか当たってるんだけどどうしようかな。。あと、GRANTの方はどこかで引っかかりそうな気がする。監視用ユーザーとか。
忘れないようにしておかないと(´・ω・`)
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の方はどこかで引っかかりそうな気がする。監視用ユーザーとか。
忘れないようにしておかないと(´・ω・`)