Звоните: (067) 644-70-74
Напишите нам burtrest@gmail.com

MySQL, использование, и ,администрирование, книги, Васвани

180.70 грн.

Артикул: 55ba2ca51e1e Категория:

Описание

год-2011

368 страниц

Эта книга MYSQL: администрирование и использование. Васвани демонстрирует собою практическое руководство по MYSQL — максимально приспособленной для использования в среде Веб системы регулирования БД. Детально разобранные примеры, практические инструкции признанного эксперта, детализированные примеры кода, сопровождающие каждую главу, позволят вам освоить приемы эксплуатации СУБД с наиболее основ. Вы узнаете, как определить и запустить MYSQL, как обеспечить свою основу этих, как трудиться с данными с помощью команд SQL, как администрировать основу этих и оптимизировать ее работу. Вы сможете исследовать признаки и принципы действия СУБД, ее техническую архитектуру и сумеете по максимуму применять все сильные стороны MYSQL.

Оглавление книги
MySQL: использование и администрирование. Васвани
Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
О техническом редакторе .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 18
Предисловие .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 20
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Введение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 22
Целевая аудитория данной книги .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 23
Что рассматривается в данной книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Соглашения, используемые в данной книге . . . . . . . . . . . . . . . . . . . . . . . 25
От издательства .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 26
Часть I. Использование
Глава 1. Введение в MySQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 28
История .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 28
Уникальные особенности .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 29
Скорость .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 29
Надежность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Масштабируемость .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 30
Простота использования .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 31
Переносимость и соответствие стандартам .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 31
Многопользовательская поддержка .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 32
Интернационализация .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 32
Широкая поддержка приложений . . . . . . . . . . . . . . . . . . . . . . . . . 32
Открытый исходный код .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 32
Семейство продуктов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 33
MySQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
MySQL Cluster .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 33
MySQL Proxy .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 34
MySQL Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MySQL Query Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MySQL Workbench .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 34
MySQL Migration Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
MySQL Embedded Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Драйверы и коннекторы MySQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 35
Техническая архитектура .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 35
Подсистемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Связность .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 36
Соответствие стандартам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Транзакции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 37
Кэширование запросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 38
Расширяемость .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 38
Поддержка симметричной многопроцессорной обработки .  .  .  .  .  .  . 39
Безопасность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Интерфейсы программирования приложений API . . . . . . . . . . . . . 40
Приложения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 40
Веб-приложения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 41
Хранилища данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 42
Бизнес-приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 43
Глава 2. Базовые команды .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 44
Понятие базовых концепций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Базы данных, таблицы и записи . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Первичные и внешние ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Язык структурированных запросов SQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 49
Нормализация баз данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 51
Работа с базами данных и таблицами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 51
Клиент командной строки MySQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 52
Создание баз данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Создание таблиц .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 54
Изменение таблиц .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 57
Удаление таблиц и баз данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 59
Работа с записями .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 60
Создание записей .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 60
Удаление и модифицирование записей .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 61
Извлечение записей .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 62
Просмотр информации о базах данных, таблицах и графах .  .  .  .  .  .  .  .  .  .  . 74
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 74
Глава 3. Принятие решений при проектировании . . . . . . . . . . . . . . 76
Выбор типов данных граф . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Числовые типы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 77
Символьные и строковые типы . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Текстовые и двоичные типы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 78
Типы DATE и TIME .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 78
Перечисления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 79
Что следует учитывать при выборе типа данных .  .  .  .  .  .  .  .  .  .  .  .  .  . 79
Выбор механизмов хранения для таблиц . . . . . . . . . . . . . . . . . . . . . . . . . 80
Механизм хранения MyISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Механизм хранения InnoDB .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 80
Механизм хранения Archive .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 81
Механизм хранения Federated .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 81
Механизм хранения Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Механизм хранения CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Механизм хранения MERGE .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 82
Механизм хранения ISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Механизм хранения NDB .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 84
Что следует учитывать при выборе механизма хранения .  .  .  .  .  .  .  . 84
Использование первичных и внешних ключей . . . . . . . . . . . . . . . . . . . . . 84
Первичные ключи .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 85
Внешние ключи .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 86
Использование индексов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Индекс UNIQUE .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 93
Индекс FULLTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 95
Глава 4. Соединения, подзапросы и представления . . . . . . . . . . . . 97
Использование соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Простое соединение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 98
Типы соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Использование подзапросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 111
Простой подзапрос .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 111
Типы подзапросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 113
Использование представлений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 123
Простое представление .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 124
Безопасность представлений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 127
Многотабличные представления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 128
Вложенные представления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 129
Обновляемые представления . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 135
Глава 5. Транзакции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Понятие транзакций .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 138
Свойства ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
MySQL и свойства ACID .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 142
Простая транзакция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Точки сохранения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 147
Управление поведением транзакций . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Автоматическая фиксация .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 149
Уровни изоляции транзакций . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Уровень изоляции READ COMMITTED .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 152
Уровень изоляции REPEATABLE READ .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 153
Уровень изоляции SERIALIZABLE .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 153
Псевдотранзакции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 155
Табличные блокировки как замена транзакций .  .  .  .  .  .  .  .  .  .  .  .  .  . 156
Реализация псевдотранзакции с использованием
табличных блокировок .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 159
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 160
Глава 6. Хранимые процедуры и функции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 162
Понятие хранимого кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Создание и использование хранимых процедур .  .  .  .  .  .  .  .  .  .  .  .  .  . 164
Создание и использование хранимых функций . . . . . . . . . . . . . . 171
Определение характеристик хранимого кода .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 175
Что еще можно сделать, используя хранимый код . . . . . . . . . . . . . . . . . 176
Переменные .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 176
Проверки условий .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 177
Конструкция CASE .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 181
Циклы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 183
Обработчики .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 189
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 194
Глава 7. Триггеры и запланированные события .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 196
Понятие триггеров .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 196
Простой триггер .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 197
Триггеры и значения OLD/NEW .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 200
Триггеры и более сложные приложения . . . . . . . . . . . . . . . . . . . 201
Триггеры и ограничения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 207
Запланированные события .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 210
Простое запланированное событие .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 210
Повторяющиеся события .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 214
События, инициируемые только один раз . . . . . . . . . . . . . . . . . . 216
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 216
Глава 8. Работа с данными разных форматов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 218
Импорт записей .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 218
Экспорт записей .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 221
Работа с XML-данными .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 224
Вывод результатов в формате XML . . . . . . . . . . . . . . . . . . . . . . . 224
Использование функций для обработки XML-данных .  .  .  .  .  .  .  .  .  . 225
Импорт XML-данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Экспорт XML-данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 238
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 239
Глава 9. Оптимизация производительности . . . . . . . . . . . . . . . . . . 241
Оптимизация запросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 241
Индексирование .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 242
Кэширование запросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 244
Анализ запросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 246
Оптимизация соединений и подзапросов . . . . . . . . . . . . . . . . . . . . . . . . 249
Используйте соединения вместо подзапросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 250
Используйте сеансовые переменные и временные таблицы
для временных данных и вычислений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 251
Указывайте имена выходных граф явным образом .  .  .  .  .  .  .  .  .  .  . 252
Проводите индексирование граф соединения . . . . . . . . . . . . . . . 253
Переписывайте коррелированные подзапросы
в виде соединений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 253
Заменяйте материализованные подзапросы временными
таблицами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 253
Оптимизация транзакционной производительности . . . . . . . . . . . . . . . . 254
Поддерживайте небольшой размер транзакций  . . . . . . . . . . . . . 254
Выбирайте подходящий уровень изоляции . . . . . . . . . . . . . . . . . 255
Избегайте взаимных блокировок .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 257
Оптимизация хранимого кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Стремитесь к простоте . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Оптимизируйте SQL-операторы, которые содержатся
в хранимом коде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Не смешивайте хранимые процедуры и триггеры .  .  .  .  .  .  .  .  .  .  .  . 260
Оптимизация конструкции таблиц .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 260
Оптимизация настроек сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Тесты производительности .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 263
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 267
Часть II. Администрирование
Глава 10. Базовое администрирование сервера .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 270
Администрирование баз данных и MySQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 271
Работоспособность .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 271
Резервное копирование данных . . . . . . . . . . . . . . . . . . . . . . . . . 271
Безопасность и управление доступом . . . . . . . . . . . . . . . . . . . . . 272
Оптимизация производительности . . . . . . . . . . . . . . . . . . . . . . . 273
Общие сведения о базовом администрировании сервера . . . . . . . . . . . . 274
Запуск и остановка сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Проверка состояния сервера MySQL . . . . . . . . . . . . . . . . . . . . . . 276
Управление клиентскими процессами MySQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 277
Внесение изменений в конфигурацию сервера . . . . . . . . . . . . . . 278
Извлечение значений переменных . . . . . . . . . . . . . . . . . . . . . . . 282
Настройка режима сервера SQL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 283
Устранение неполадок с использованием журнала ошибок . . . . . 285
Извлечение метаинформации баз данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 285
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 289
Глава 11. Управление пользователями и контроль
над доступом .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 291
Понятие системы управления доступом . . . . . . . . . . . . . . . . . . . . . . . . . 291
Таблица user .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 293
Таблицы db и host .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 296
Таблицы tables_priv и columns_priv . . . . . . . . . . . . . . . . . . . . . . . 299
Таблица procs_priv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Взаимодействие между таблицами привилегий .  .  .  .  .  .  .  .  .  .  .  .  .  . 303
Управление привилегиями пользователей . . . . . . . . . . . . . . . . . . . . . . . 304
Предоставление и отмена привилегий .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 304
Просмотр привилегий .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 309
Восстановление привилегий по умолчанию .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 309
Работа с учетными записями и паролями пользователей . . . . . . . . . . . . 310
Пароль администратора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 312
Глава 12. Сопровождение, резервное копирование
и восстановление .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 314
Использование файлов журналов баз данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 314
Журнал ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Общий журнал запросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 315
Журнал медленных запросов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 316
Двоичный журнал .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 317
Проверка и восстановление таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Проверка таблиц на предмет ошибок . . . . . . . . . . . . . . . . . . . . . 319
Восстановление таблиц .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 321
Оптимизация таблиц .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 322
Резервное копирование и восстановление данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 322
Резервное копирование баз данных и таблиц . . . . . . . . . . . . . . . 323
Резервное копирование сразу нескольких баз данных .  .  .  .  .  .  .  .  . 324
Резервное копирование структур таблиц .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 325
Резервное копирование содержимого таблиц . . . . . . . . . . . . . . . 325
Резервное копирование прочих объектов баз данных . . . . . . . . . 325
Восстановление баз данных и таблиц из резервной копии .  .  .  .  .  . 326
Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 327
Глава 13. Репликация данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 329
Понятие репликации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Взаимоотношение «головной сервер — подчиненный сервер» . . . 330
Потоки репликации .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 332
Методы репликации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Конфигурирование системы репликации «головной сервер —
подчиненный сервер» .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 334
Конфигурирование системы репликации «головной сервер —
головной сервер» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Управление репликацией .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 341
Внесение изменений в параметры репликации . . . . . . . . . . . . . . 341
Запуск и остановка подчиненных серверов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 342
Проверка состояния репликации .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 342
Работа с двоичными журналами головного се