この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの15日目です.
私は古いMySQLユーザですから*1、MySQLに最近入った機能や構文などは苦手です。業務でバリバリに使う環境にないと、ここ数年のMySQLの急速な機能拡大について行くのがたいへんというのが正直なところです。
そんなわけで、機能としては知っているし用途も判るのだけど、ちゃんと情報を追ったことがなかったなと思い、今日は INFORMATION_SCHEMA のところを眺めてみることにしました。
MySQL :: MySQL 5.7 Reference Manual :: 20 INFORMATION_SCHEMA Tables
20章の INFORMATION_SCHEMA Tables になります。
mysql> use information_schema mysql> show tables;
として見ると、マニュアルに書かれているとおりの31個のテーブルと、INNODB_* という名前の30個のテーブルがあることがわかります。
マニュアルではアルファベット順になっているため、主に(私の主観で)種類ごとに分けてみました。
少しだけコメントもつけたので、参考になりましたら。
DB基本オブジェクト:
SCHEMATA TABLES COLUMNS VIEWS TRIGGERS ROUTINES <--ストアド PARAMETERS <--ストアドとかのパラメタ STATISTICS <--indexのこと TABLE_CONSTRAINTS <--PK/FK/UNIQUEキー REFERENTIAL_CONSTRAINTS <--FK KEY_COLUMN_USAGE
権限まわり:
USER_PRIVILEGES SCHEMA_PRIVILEGES TABLE_PRIVILEGES COLUMN_PRIVILEGES
状態/設定確認:
GLOBAL_STATUS GLOBAL_VARIABLES SESSION_STATUS SESSION_VARIABLES PROCESSLIST ※MySQL5.7.6より、show_compatibility_56 値をオンにしていないと見えないので注意
※MySQL5.7.6より(笑)、本設定は Deprecated。PERFORMANCE_SCHEMAを参照する。http://dev.mysql.com/doc/refman/5.7/en/performance-schema-variable-table-migration.html
使用可能なキャラクタセット系:
CHARACTER_SETS COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY
その他使用可能オブジェクト系:
ENGINES PLUGINS TABLESPACES <--InnoDBの情報は返さない FILES <--InnoDBの情報も返す EVENTS <--イベントスケジューラ OPTIMIZER_TRACE <--optimizer_trace値をオンにして使う PARTITIONS <--1つのパーティションのテーブルも含む PROFILING <--SHOW PROFILES相当。5.7.2からはDeprecated. ※PARTITIONSは、2つ以上のパーティションを切った時のみに出てくるものかと思ったら、パーティション指定をせずに CREATE TABLE したテーブルも含まれるのですね。つまり、すべてのテーブルの一覧+パーティション分けたものはその数ぶんだけ、出力されるものと考えてよさそうです。
ひとつ例として、PLUGINS テーブルの中身を見てみました。
昨日の日記で「MySQLの拡張」として紹介したプラグインが、このテーブルで見ることができます。
INFORMATION_SCHEMAで表示できる情報をプラグインとして追加できたり、ストレージエンジンもプラグインとして扱われていることが分かります。
面白いのが binlog。これも内部の扱いではストレージンなのですね。確かに「データを書く」という点ではストレージエンジンなのでしょうけど、、、へんなの。
mysql> SELECT PLUGIN_NAME,PLUGIN_TYPE, PLUGIN_LICENSE FROM PLUGINS; +----------------------------+--------------------+----------------+ | PLUGIN_NAME | PLUGIN_TYPE | PLUGIN_LICENSE | +----------------------------+--------------------+----------------+ | binlog | STORAGE ENGINE | GPL | | mysql_native_password | AUTHENTICATION | GPL | | sha256_password | AUTHENTICATION | GPL | | MRG_MYISAM | STORAGE ENGINE | GPL | | MEMORY | STORAGE ENGINE | GPL | | InnoDB | STORAGE ENGINE | GPL | | INNODB_TRX | INFORMATION SCHEMA | GPL | | INNODB_LOCKS | INFORMATION SCHEMA | GPL | | INNODB_LOCK_WAITS | INFORMATION SCHEMA | GPL | | INNODB_CMP | INFORMATION SCHEMA | GPL | | INNODB_CMP_RESET | INFORMATION SCHEMA | GPL | | INNODB_CMPMEM | INFORMATION SCHEMA | GPL | | INNODB_CMPMEM_RESET | INFORMATION SCHEMA | GPL | | INNODB_CMP_PER_INDEX | INFORMATION SCHEMA | GPL | | INNODB_CMP_PER_INDEX_RESET | INFORMATION SCHEMA | GPL | | INNODB_BUFFER_PAGE | INFORMATION SCHEMA | GPL | | INNODB_BUFFER_PAGE_LRU | INFORMATION SCHEMA | GPL | | INNODB_BUFFER_POOL_STATS | INFORMATION SCHEMA | GPL | | INNODB_TEMP_TABLE_INFO | INFORMATION SCHEMA | GPL | | INNODB_METRICS | INFORMATION SCHEMA | GPL | | INNODB_FT_DEFAULT_STOPWORD | INFORMATION SCHEMA | GPL | | INNODB_FT_DELETED | INFORMATION SCHEMA | GPL | | INNODB_FT_BEING_DELETED | INFORMATION SCHEMA | GPL | | INNODB_FT_CONFIG | INFORMATION SCHEMA | GPL | | INNODB_FT_INDEX_CACHE | INFORMATION SCHEMA | GPL | | INNODB_FT_INDEX_TABLE | INFORMATION SCHEMA | GPL | | INNODB_SYS_TABLES | INFORMATION SCHEMA | GPL | | INNODB_SYS_TABLESTATS | INFORMATION SCHEMA | GPL | | INNODB_SYS_INDEXES | INFORMATION SCHEMA | GPL | | INNODB_SYS_COLUMNS | INFORMATION SCHEMA | GPL | | INNODB_SYS_FIELDS | INFORMATION SCHEMA | GPL | | INNODB_SYS_FOREIGN | INFORMATION SCHEMA | GPL | | INNODB_SYS_FOREIGN_COLS | INFORMATION SCHEMA | GPL | | INNODB_SYS_TABLESPACES | INFORMATION SCHEMA | GPL | | INNODB_SYS_DATAFILES | INFORMATION SCHEMA | GPL | | INNODB_SYS_VIRTUAL | INFORMATION SCHEMA | GPL | | MyISAM | STORAGE ENGINE | GPL | | PERFORMANCE_SCHEMA | STORAGE ENGINE | GPL | | CSV | STORAGE ENGINE | GPL | | FEDERATED | STORAGE ENGINE | GPL | | BLACKHOLE | STORAGE ENGINE | GPL | | partition | STORAGE ENGINE | GPL | | ARCHIVE | STORAGE ENGINE | GPL | | ngram | FTPARSER | GPL | +----------------------------+--------------------+----------------+
おまけ: ENGINES の内容。
mysql> SELECT ENGINE, SUPPORT, TRANSACTIONS, XA, SAVEPOINTS FROM ENGINES; +--------------------+---------+--------------+------+------------+ | ENGINE | SUPPORT | TRANSACTIONS | XA | SAVEPOINTS | +--------------------+---------+--------------+------+------------+ | MRG_MYISAM | YES | NO | NO | NO | | CSV | YES | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | NO | NO | NO | | BLACKHOLE | YES | NO | NO | NO | | MyISAM | YES | NO | NO | NO | | InnoDB | DEFAULT | YES | YES | YES | | ARCHIVE | YES | NO | NO | NO | | MEMORY | YES | NO | NO | NO | | FEDERATED | NO | NULL | NULL | NULL | +--------------------+---------+--------------+------+------------+
*1:「古くから」でないところが若干自虐的