18.2.3.1 Характеристики статического (фиксированной длины) таблицы
Статический формат является по умолчанию для MyISAM таблиц. Он используется, когда таблица не содержит столбцов переменной длины (VARCHAR, VARBINARY, BLOB или TEXT). Каждая строка хранится, используя фиксированное количество байт.
Из трех MyISAM форматов хранения, статический формат является простейшим и наиболее безопасным (меньше подвержен повреждениям). Он также является самым быстрым из дисковых форматов из-за лёгкости поиска строк в файле данных: для поиска строки по номеру строки в индексе, умножьте номер строки на длину строки, чтобы вычислить позицию строки. Кроме того, при сканировании таблицы очень легко читать постоянное число строк с каждой операцией чтения диска.
Безопасность проявляется, если компьютер выходит из строя во время записи MySQL сервера в файл фиксированного формата MyISAM. В этом случае myisamchk легко определяет начало и конец каждой строки, поэтому обычно может восстановить все строки, кроме частично записанной. MyISAM индексы таблиц всегда могут быть восстановлены на основе строк данных.
Формат строк фиксированной длины доступен только для таблиц, не имеющих столбцов BLOB или TEXT. Создание таблицы, имеющей такие столбцы с явным ROW_FORMAT, не вызывает ошибок или предупреждений; спецификация формата игнорируется.
Статические таблицы имеют следующие характеристики:
Столбцы
CHARиVARCHARзаполняются пробелами до указанной ширины столбца, хотя тип столбца не изменяется. СтолбцыBINARYиVARBINARYзаполняются0x00байтами до ширины столбца.Столбцы
NULLтребуют дополнительного места в строке для записи о том, являются ли их значенияNULL. Каждый столбецNULLзанимает один дополнительный бит, округлённый до ближайшего байта.Очень быстро.
Легко кэшируются.
Легко восстанавливаются после сбоя, поскольку строки находятся в фиксированных позициях.
Перестройка не требуется, если вы не удалили большое количество строк и не хотите вернуть свободные дисковые ресурсы операционной системе. Для этого используйте
OPTIMIZE TABLEили myisamchk -r.Обычно требуют больше дискового пространства, чем таблицы динамического формата.
-
Ожидаемая длина строки в байтах для статических строк рассчитывается по следующему выражению:
row length = 1 + (sum of column lengths) + (number of NULL columns+delete_flag+ 7)/8 + (number of variable-length columns)delete_flagравно 1 для таблиц со статическим форматом строк. Статические таблицы используют бит в записи строки для флага, указывающего, была ли строка удалена.delete_flagравен 0 для динамических таблиц, поскольку флаг хранится в заголовке динамической строки.
© 2025 Oracle
Licensed under the GPLv2 License.