Типы таблиц mySQL
Материал из 1GbWiki.
Версия 19:27, 16 ноября 2007 (править) Dmih (Обсуждение | вклад) (Новая: MySQL позволяет для каждой конкретной таблицы указать её тип, т.е. технический способ хранения и работы ...) ← К предыдущему изменению |
Версия 00:22, 22 ноября 2007 (править) (отменить) Dmach (Обсуждение | вклад) м К следующему изменению → |
||
Строка 8: | Строка 8: | ||
* Быстро работает для большинства приложений, экономичен по занимаемому месту (а, следовательно, быстродействию). | * Быстро работает для большинства приложений, экономичен по занимаемому месту (а, следовательно, быстродействию). | ||
* Таблицы myISAM могут иногда повреждаться, что необходимо исправлять вручную с помощью SQL команды REPAIR TABLE. Процесс починки, однако, в 99,9% случаев гарантирует полное восстановление всех данных и продолжение работы как будто ничего и не случалось. | * Таблицы myISAM могут иногда повреждаться, что необходимо исправлять вручную с помощью SQL команды REPAIR TABLE. Процесс починки, однако, в 99,9% случаев гарантирует полное восстановление всех данных и продолжение работы как будто ничего и не случалось. | ||
- | * Таблицы можно копировать, архивировать средствами файловой системы. Достаточно оперировать с тремя файлами, которые представляют собой таблицу | + | * Таблицы можно копировать, архивировать средствами файловой системы. Достаточно оперировать с тремя файлами, которые представляют собой таблицу |
+ | ** .frm - формат таблицы | ||
+ | ** .myd - данные | ||
+ | ** .myi - индексы | ||
* Поддерживает полнотекстовый поиск (см. документацию). | * Поддерживает полнотекстовый поиск (см. документацию). | ||
Версия 00:22, 22 ноября 2007
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 обычно быстрее, т.к. таблицы занимают меньше места и для работы с приложением требуется меньше дисковой активности, что очень важно в условиях виртуального хостинга.