Сегюр, Луи-Филипп
- 1 year ago
- 0
- 0
MyISAM — одна из основных (наряду с InnoDB ) систем хранения данных в СУБД MySQL . Она основывается на принципах ISAM и обладает в сравнении с ним рядом полезных дополнений. Поддерживается с версий MySQL 3.x, до версий MySQL 5.5 являлась системой хранения по умолчанию. MyISAM имеет возможности по сжатию данных, по созданию полнотекстовых индексов, однако, не является устойчивой к сбоям и не выполняет требования ACID .
Таблицы MyISAM прекрасно подходят для использования в небольших интернет-проектах ( WWW ) и других средах, где преобладают запросы на чтение и нет жестких требований к надежности. Таблицы типа MyISAM показывают относительно хорошие результаты при выборках данных (запросы SELECT ). Во многом это связано с отсутствием поддержки транзакций и внешних ключей . Однако при модификации и добавлении записей вся таблица кратковременно блокируется, это может привести к серьёзным задержкам при большой загрузке.
Для таблиц этого типа создан ряд специализированных утилит, позволяющих манипулировать табличными файлами. Сюда входят утилита myisamchk для проверки и восстановления таблиц и индексов (требует полной остановки процесса MySQL и создает время неработоспособности системы, исполнение заключается в создании с нуля нового целостного файла таблицы и перезаписи данных в него) и утилита myisampack для создания сжатых таблиц.
Таблицы MyISAM являются платформенно-независимыми. Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования. Для этого MySQL хранит все числа с плавающей запятой в формате IEEE , а все целые числа — в формате с прямым [ источник не указан 735 дней ] порядком следования байтов .
Индексные файлы имеют расширение .MYI (MYIndex). Файлы с расширением .MYD (MYData) содержат данные, а с расширением .frm — схему таблицы. Если индексный файл по какой-то причине теряется, программа перестраивает индексы, используя информацию из frm-файла.
По умолчанию в каждой таблице может быть не более тридцати двух индексов, но это значение можно повысить до шестидесяти четырёх. Индексы создаются в виде двоичных деревьев . Разрешается индексировать столбцы типа BLOB и TEXT, и столбцы, допускающие значения NULL.
В таблицах MyISAM могут быть фиксированные по длине, динамические либо сжатые записи. Выбор между фиксированным и динамическим форматом диктуется определениями столбцов. Для создания сжатых таблиц предназначена утилита myisampack.
Данные недостатки проявляются в заметной степени при высокой нагрузке: более 400 клиентов, исполняющих сложные запросы по базе данных размером 2-3 ГБ.