INFORMATION_SCHEMA, теоретически, представляет собой набор представлений, определенных в стандарте SQL, которые позволяют пользователю просматривать метаданные системы. Как это реализовано в MySQL?
Когда я подключаюсь к новой установке, я вижу две базы данных: mysql
и information_schema
. После использования SHOW CREATE TABLE
операторов в information_schema
базе данных, похоже, что она реализована не как набор представлений, а с использованием базовых таблиц. Это предположение верно? Или есть другие системные таблицы, которые скрыты от пользователя?
mysql
information-schema
ivotron
источник
источник
Ответы:
База данных INFORMATION_SCHEMA состоит из временных таблиц, использующих механизм хранения MEMORY.
Пример: вот таблица INFORMATION_SCHEMA.TABLES в MySQL 5.5.12 (версия для Windows)
Для этих таблиц нет физической папки, даже файлов .frm. Вы не можете mysqldump это. Вы не можете бросить это. Вы не можете добавить таблицы к нему. Вы не можете удалить таблицы из него. Так где же таблицы ???
Все таблицы в базе данных INFORMATION_SCHEMA хранятся непосредственно в памяти как таблицы механизма хранения MEMORY. Они полностью встроены в MySQL, поэтому механизмы .frm обрабатываются в mysqld. В своем ответе я впервые показал макет таблицы INFORMATION_SCHEMA.TABLES. Это временная таблица в памяти. Это управляется с использованием протоколов механизма хранения. Таким образом, когда mysqld выключен, все таблицы information_schema удаляются. Когда mysqld запущен, все таблицы information_schema создаются как таблицы TEMPORARY и заполняются метаданными для каждой таблицы в экземпляре mysql.
База данных INFORMATION_SCHEMA была впервые представлена в MySQL 5.0, чтобы предоставить вам доступ к метаданным о таблицах других механизмов хранения. Например, вы можете сделать SHOW DATABASES, чтобы получить список баз данных. Вы также можете запросить их, как это:
Вы можете получить имена таблиц в базе данных двумя способами:
или
С самого начала MySQL расширил базу данных INFORMATION_SCHEMA, чтобы иметь список процессов (начиная с MySQL 5.1). На самом деле вы можете запросить список процессов, ища длительные запросы, которые все еще выполняются не менее 10 минут
Вы можете использовать INFORMATION_SCHEMA, чтобы делать все сложные вещи, такие как:
Получить количество всех таблиц, используя определенные механизмы хранения:
Получить рекомендуемый размер ключевого буфера MyISAM в МБ
Получить рекомендуемый размер пула буферов InnoDB в ГБ
Получить использование диска всеми базами данных по хранилищу в МБ
Поверьте, есть еще более замечательные варианты использования INFORMATION_SCHEMA, которые не позволяют мне обсуждать дальше.
Помните, что INFORMATION_SCHEMA настолько чувствительна, что если mysql запущен и вы делаете следующее:
а затем перейти в MySQL запустить
Вы увидите junkfolder в качестве одной из баз данных.
Знание этого очень важно для администраторов баз данных и разработчиков. Глава 20 (разработчики) и Глава 31 (администраторы баз данных) книги MySQL 5.0 Certification Study Guide
там для подготовки к экзаменам разработчика и сертификации DBA. Получить книгу, хорошо изучить эти главы, и вы могли бы сделать большие вещи с INFORMATION_SCHEMA MySQL.
База данных INFORMATION_SCHEMA, начиная с MySQL 5.5, теперь содержит плагины, глобальные переменные (статус и статика), переменные сеанса (статус и статика), состояние механизма хранения, инструментарий метрик производительности, карту триггеров, события (программируемые) и многое другое.
Извините, это может показаться WTMI, но я большой сторонник использования базы данных INFORMATION_SCHEMA.
источник