База даних information_schema
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
База даних INFORMATION_SCHEMA є набором системних уявлень і відповідає стандарту SQL. У MySQL реалізовано значну кількість описаних у стандарті уявлень, а також додано свої. У версії MySQL 5.1 багатьом уявленням відповідають команди SHOW, наприклад SHOW FULL PROCESSLIST та SHOW STATUS. Але є такі, для яких відповідних команд SHOW не існує.
Принадність уявлень з бази даних INFORMATION_SCHEMA полягає в тому, що їх можна опитувати за допомогою стандартних команд SQL. В результаті досягається куди більша гнучкість, ніж при використанні команд SHOW, що породжують результуючі набори, які неможливо агрегувати, з'єднувати і взагалі маніпулювати ними з використанням звичайних засобів SQL. Наявність даних у системних уявленнях дає можливість складати дуже цікаві та корисні запити.
Наприклад, які таблиці демонстраційної бази даних Sakila посилаються на таблицю actor? За наявності послідовної угоди про ім'я визначити це дуже легко:
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
-> WHERE TABLE_SCHEMA='sakila' AND COLUMN_NAME='actor_id'
-> AND TABLE_NAME <> 'actor';
Для кількох прикладів із цієї книги нам потрібно було знайти індекси щодо кількох стовпців. Ось відповідний запит:
mysql> SELECT TABLE_NAME, GROUP_CONCAT(COLUMN_NAME)
-> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE TABLE_SCHEMA='sakila'
-> GROUP BY TABLE_NAME, CONSTRAINT_NAME -> HAVING COUNT(*) > 1;
Можна писати і складніші запити, так само, як для звичайних таблиць.Сайт MySQL Forge (http://forge.mysql.com) - чудове місце для пошуку запитів до цих уявлень; там ви можете поділитися і своїми ідеями. Є приклади запитів для пошуку дублюючих або надлишкових індексів, пошуку індексів з дуже низькою вибірковістю та багато іншого.
Основний недолік полягає в тому, що деякі уявлення працюють дуже повільно, порівняно з відповідними командами SHOW. Як правило, вони відбирають усі дані, зберігають їх у часовій таблиці, а потім роблять цю таблицю доступною для запиту. При реалізації багатьох завдань моніторингу, пошуку неполадок та налаштування швидше просто набрати команду SHOW, ніж вводити повний SQL-запит для вибірки даних уявлень.
Крім того, у поточній версії ці уявлення не оновлюються. Хоча вони дозволяють вибрати параметри сервера, оновити їх так, щоб змінилася його поведінка, не вдасться. На практиці ці обмеження означають, що для конфігурування сервера, як і раніше, необхідно користуватися командами SHOW і SET, нехай навіть уявлення з бази INFORMATION_SCHEMA дуже зручні для інших цілей.