Spec-Zone.ru › MySQL 5.7

15.2.3.1 Характеристики статических (фиксированной длины) таблиц

Статический формат является значением по умолчанию для MyISAM таблиц. Он используется, когда таблица не содержит столбцов переменной длины (VARCHAR, VARBINARY, BLOB или TEXT). Каждая строка хранится с использованием фиксированного количества байтов.

Из трех MyISAM форматов хранения статический формат является самым простым и безопасным (наименее подвержен повреждению). Он также является самым быстрым из форматов на диске из-за лёгкости поиска строк в файле данных на диске: для поиска строки по номеру строки в индексе, умножьте номер строки на длину строки, чтобы вычислить позицию строки. Кроме того, при сканировании таблицы очень легко читать постоянное количество строк с каждой операцией чтения с диска.

Безопасность проявляется, если компьютер аварийно завершает работу во время записи в файл фиксированного формата MyISAM сервером MySQL. В этом случае 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-5.7-en/static-format.html

Spec-Zone.ru

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