MySQL - характеристики таблицы MyISAM |
Каждая таблица хранится в трех файлах. Названия файлов совпадают с названия таблицы, а расширения файлов указывают на тип хранимых данных. *.frm - содержит формат таблицы *.myd (MYData) - содержит данные *.myi (MYIndex) - содержит индексы
Характеристики механизма хранения данных MyISAM
- Все данные хранятся с младшим байтом в начале. Запись данных в обратном порядке делает их платформо независимым. По заверениям разработчиков запись в обратном порядке не приводит к существенному снижению быстродействия.
- Все числовые ключи хранятся со старшим байтом в начале.
- Размер базы данных ограничен допустимым размером файла в используемой файловой системе.
- Максимальное число строк составляет 2^32 (~4.295E+09), при компиляции MySQL с параметром --with-big-tables максимальное число строк увеличивается до (2^32)^2 (1.844E+19)
- Максимальное число индексов для одной таблицы составляет 64. При компиляции MySQL с параметром --with-max-indexes=N (N<=128) число индексов можно увеличить до 128.
- Максимальное число полей для одного индекса составляет 16.
- Максимальная длина ключа составляет 1000 байт.
- Когда строки записываются в отсортированном порядке (для полей с AUTO_INCREMENT), то дерево индекса разбивается так что верхний узел содержит один ключ. Это позволяет оптимизировать место используемое под индекс.
- Для таблицы можно создать только одно поле AUTO_INCREMENT.
- Повторное использование значений полученных для поля AUTO_INCREMENT не происходит даже после удаления строки с последним полученным значением. Значения получаемые для поля AUTO_INCREMENT можно изменить использовав SQL запрос. ALTER TABLE `table_name` AUTO_INCREMENT = 123.
- Строки с динамически изменяемым размером менее фрагментируются когда удаление, изменение и запись используются в перемешку. Это достигается благодаря автоматическому объединению смежных удаленных блоков или благодаря расширению изменяемого блока в случае когда последующий блок удален.
- MyISAM поддерживает параллельную запись и чтение строк (конкурентная вставка). Для управления паралельной записью и чтением существует параметр concurrent_insert.
- 0 - параллельная запись отключенна.
- 1 - параллельная запись только для не фрагментированных таблиц (таблиц не имеющих свободных блоков в середине файла с данными). Значение по умолчанию.
- 2 - параллельная запись включенна. В этом режиме все новые строки вставляются в конец файла данных если параллельно происходит чтение данных.
- Существует возможность размещения файла данных и файла индексов на разных физических устройствах, задается при создании таблицы параметрами DATA DIRECTORY и INDEX DIRECTORY. Подобное разделение может увеличить скорость выполнения запросов к таблице.
- BLOB и TEXT поля могут индексироватся.
- Возможно использование значения NULL в индексируемых полях. Может привести к увеличению размеров индекса.
- Поля таблицы могут иметь различную кодировку.
- В индекс файле содержится флаг отвечающий за нормальное закрытие таблицы. Если MySQL запускается с параметром --myisam-recover. При запуске MySQL таблицы с типом хранения данных MyISAM автоматически проверяются и при необходимости востанавливаются.
- Поля типа VARCHAR начинаются с данных (1-2 байта) о размере поля.
- Поля VARCHAR могут иметь как фиксированную так и динамически меняющиюся размерность.
- Суммарная размерность полей VARCHAR и CHAR в одной таблице не должна превышать 64KB.
- Возможна произвольная длина для полей UNIQUE.
|