Типы таблиц mySQL
Материал из 1GbWiki.
MySQL позволяет для каждой конкретной таблицы указать её тип, т.е. технический способ хранения и работы с данными таблицы. Типов таблиц десяток, если не больше, однако, в 99% случаев используются следующие типы, которые являются традиционными типами хранения обычных таблиц на диске сервера:
- MyISAM
- InnoDB
Существует также специальный тип Heap, который на диске не хранится, данные такой таблицы живут только во время жизни сервера.
MyISAM
- Быстро работает для большинства приложений, экономичен по занимаемому месту (а, следовательно, быстродействию).
- Таблицы myISAM могут иногда повреждаться, что необходимо исправлять вручную с помощью SQL команды REPAIR TABLE. Процесс починки, однако, в 99,9% случаев гарантирует полное восстановление всех данных и продолжение работы как будто ничего и не случалось.
- Таблицы можно копировать, архивировать средствами файловой системы. Достаточно оперировать с тремя файлами, которые представляют собой таблицу (frm, myd и myi).
- Поддерживает полнотекстовый поиск (см. документацию).
InnoDB
- Работает в среднем медленнее и занимает больше места на диске.
- Блокировки на уровне строк таблиц, что может принести существенный выигрыш в приложениях определенной архитектуры по сравнению с myISAM.
- Поддерживают современные техники программирования, такие как: внешние ключи, транзакции.
- Отказоустойчивость – таблица не может повредиться (только разве что вместе со всей инсталляцией сервера – зато это более вероятно, узкое место – единый на весь сервер лог транзакций).
- Восстановление и резервное копирование таблиц производится только с помощью SQL дампов – менее удобно, значительно более ресурсоемко. Перемещать файлы таблиц (idb) нельзя – это немедленно приведет к полной потере таблицы.
Что выбрать
MySQL 3 и 4 предлагают только myISAM. В mysql 5-й версии по умолчанию установлено создание таблиц формата InnoDB, однако, большинство популярных продуктов самостоятельно инструктируют сервер создавать таблицы myISAM. Не нужно вмешиваться в предпочтения конкретного продукта.
В случае, если выбор придется сделать именно вам, можно уверенно сказать, что в настоящее время теоретический выбор сделать крайне сложно. InnoDB – прогрессивный и единственный актуально поддерживаемый, но несколько тяжеловесный формат. MyISAM – легкий и удачный, проверенный временем формат, но он практически не поддерживается командой разработки и содержит ряд принципиальных недочетов, которые никогда уже не будут исправлены. Делайте выбор на основе требуемой вам функциональности.
Что касается скорости, то работа обычного абстрактного веб-приложения с myISAM обычно быстрее, т.к. таблицы занимают меньше места и для работы с приложением требуется меньше дисковой активности, что очень важно в условиях виртуального хостинга.