База данных INFORMATION_SCHEMA.
База данных (схема) INFORMATION_SCHEMA служит как центральный репозиторий метаданных MySQL. Это виртуальная база данных. Виртуальная в том смысле, что из нее ничего не сохраняется на диск. Но, как и в другой реальной базе данных, в ней есть таблицы. Информацию из этих таблиц можно получить с помощью команды SELECT, как и из обычных таблиц в другой базе данных. На самом деле это не “реальные” таблицы, а системные представления (system views), которые показывают динамическую информацию в зависимости от привилегий пользователя.
Лично мне больше нравится, когда слово “view” не переводят на русский язык, как “представление” или “вид”, а используют либо английское название, либо его производные “вьюшка” и т.п.
Список всех таблиц в базе данных information_schema можно получить следующим запросом:
mysql> select table_name from information_schema.tables
-> where table_schema=’information_schema’
-> order by table_name;
+—————————————+
| table_name |
+—————————————+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| INNODB_BUFFER_PAGE |
| INNODB_BUFFER_PAGE_LRU |
| INNODB_BUFFER_POOL_STATS |
| INNODB_CMP |
| INNODB_CMPMEM |
| INNODB_CMPMEM_RESET |
| INNODB_CMP_RESET |
| INNODB_LOCKS |
| INNODB_LOCK_WAITS |
| INNODB_TRX |
| KEY_COLUMN_USAGE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+—————————————+
40 rows in set (0.00 sec)
Рассмотрим подробнее какую информацию содержат данные таблицы.
Информация о таблицах и базах данных:
- COLUMNS: описание столбцов в таблицах и представлениях.
- ENGINES: описание storage engines (“движков” базы данных).
- SCHEMATA: описание баз данных.
- TABLES: описание таблиц.
- VIEWS: описание представлеий.
- PARTITIONS: информация о партициях в таблицах.
Привилегии:
- COLUMN_PRIVILEGES: привилегии на столбцы таблиц.
- SCHEMA_PRIVILEGES: привилегии на базы данных.
- TABLE_PRIVILEGES: привилегии на таблицы.
- USER_PRIVILEGES: глобальные привилегии пользователей.
Кодировка:
- CHARACTER_SETS: доступные кодировки.
- COLLATIONS: сортировки для каждой кодировки.
- COLLATION_CHARACTER_SET_APPLICABILITY: какая кодировка применима для определенной кодировки.
Констрейнты и индексы:
- KEY_COLUMN_USAGE: констрейнты на столбцы.
- REFERENTIAL_CONSTRAINTS: внешние ключи.
- STATISTICS: индексы на таблицы.
- TABLE_CONSTRAINTS: констрейнты на таблицы.
Установки и статусы сервера:
- GLOBAL_STATUS: глобальная статистика MySQL сервера.
- GLOBAL_VARIABLES: глобальные переменные сервера.
- PLUGINS: плагины сервера.
- PROCESSLIST: показывает подключения к БД.
- SESSION_STATUS: статистика текущей сессии.
- SESSION_VARIABLES: переменные сервера установленные в текущей сессии.
Триггеры, процедуры, параметры:
- EVENTS: планировщик заданий в базе данных.
- ROUTINES: информация о сохраненных функциях и процедурах.
- TRIGGERS: триггеры в базе данных.
- PARAMETERS: информация о параметрах сохраненных процедур и функций и возвращаемых значениях.
InnoDB:
- INNODB_LOCKS: блокировки, которые каждая транзакция InnoDB удерживает или запрашивает.
- INNODB_LOCK_WAITS: блокировки, которые ждет указанная транзакция.
- INNODB_TRX: каждая транзакция исполняющаяся в InnoDB.
Подробнее про INFORMATION_SCHEMA можно почитать в документации MySQL.