Типы таблиц 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 обычно быстрее, т.к. таблицы занимают меньше места и для работы с приложением требуется меньше дисковой активности, что очень важно в условиях виртуального хостинга.

Личные инструменты