{{tag>myisam mysql}}

===== MyISAM =====


  * транзакций нет
  * макс. диск: 256Тб
  * блокировка таблица
  * полнотекстовый поиск
  * работа в кластере: нет
  * поддержание целостности, внешние ключи: нет
  * репликация: да
  * макс. индексов: 64
  * макс. записей: 2^32
  * макс. длина ключа: 1000 байт
  * ключи занимают место на диске до (макс.): (key_length+4)/0.67
  * чувствительные к «падению» сервера, сложно восстанавливать
  * при отсутствии «дырок» (gaps) — вставки не конкурентные (блокировок не происходит)
  * возможно хранить файлы данных и индексов на разных устройствах
каждый столбец может иметь свою кодировку
  * макс. сумма длин VARCHAR и CHAR: 64к


**Static (Fixed-length) формат таблиц**

  * автоматически, если нет VARCHAR, VARBINARY, BLOB, TEXT столбцов
  * быстрее, безопаснее (устойчивее), лучше кешируется, требует больше места на диске
  * если указать принудительно, VARCHAR и CHAR заполняются пробелами, VARBINARY — нулями

**Dynamic length формат таблиц**

  * все строки длиной до 4 — VARCHAR
  * пустые строки и ноль (0) не занимают места на диске (NULL это не ноль)
  * запись (строка) фрагментируется автоматически при апдейтах (нужно запускать OPTIMIZE TABLE для дефрагментации)
  * сложнее восстановить при сбоях

**Compressed**

  * создается утилитой myisampack
  * read-only
  * рекомендуется для очень медленных носителей
  * может быть и fixed-length и dynamic-length
  * посмотрите в сторону Archive table engine

==== Советы/Рекомендации ====

говорят, что MyISAM таблицы обязательно «ломаются» рано или поздно, так что будте готовы ;)
не убивайте сервер во время записи
не изменяйте таблицы несколькими серверами одновременно
не изменяйте таблицы утилитой и сервером одновременно

Рекомендации: справочники


===== Восстановление =====

  * tbl_name.frm: Table definition
  * tbl_name.MYD: Table data
  * tbl_name.MYI: Table indexes

<code>
CHECK TABLE tbl_name QUICK;
REPAIR TABLE tbl_name EXTENDED;
</code>