Spec-Zone.ru › MySQL 9.2

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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/static-format.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API