7.1.2.1 Характеристики статической таблицы (с фиксированной длиной) | Оглавление | 7.1.2.3 Характеристики сжатых таблиц |
Данный формат используется для таблиц, которые содержат столбцы VARCHAR
,
BLOB
или TEXT
, а также если таблица была создана с параметром
ROW_FORMAT=dynamic
.
Это несколько более сложный формат, так как у каждой строки есть заголовок, в котором указана ее длина. Одна запись может заканчиваться более чем в одном месте, если она была увеличена во время обновления.
Чтобы произвести дефрагментацию таблицы, можно воспользоваться командами
OPTIMIZE table
или myisamchk
. Если у вас есть статические данные, которые
часто считываются/изменяются в некоторых столбцах VARCHAR
или BLOB
одной и
той же таблицы, во избежание фрагментации эти динамические столбцы лучше
переместить в другие таблицы. Свойства динамических таблиц следующие:
''
) для строковых столбцов, или ноль для числовых
столбцов (это не то же самое, что столбцы, содержащие значение NULL
).
Если длина строкового столбца равна нулю после удаления пробелов в
конце строки, или у числового столбца значение ноль, он отмечается в
битовом массиве и не сохраняется на диск. Строки, содержащие значения,
сохраняются в виде байта длины и строки содержимого.
myisamchk -r
. Чтобы получить
статистические данные, воспользуйтесь командой myisamchk -ei tbl_name
.
3 + (число столбцов+ 7) / 8 + (число столбцов char) + размер числовых столбцов в упакованном виде + длина строк + (число столбцов NULL + 7) / 8На каждую ссылку добавляется по 6 байтов. Динамические записи связываются при каждом увеличении записи во время обновления. Каждая новая ссылка занимает по крайней мере 20 байтов, поэтому следующее увеличение может произойти либо по этой же ссылке; либо по другой, если не хватит места. Количество ссылок можно проверить при помощи команды
myisamchk -ed
. Все
ссылки можно удалить при помощи команды myisamchk -r
.
7.1.2.1 Характеристики статической таблицы (с фиксированной длиной) | Оглавление | 7.1.2.3 Характеристики сжатых таблиц |