Spec-Zone.ru › MariaDB

Формат строк InnoDB REDUNDANT

Формат строк REDUNDANT — это оригинальный, не сжатый формат строк.

Формат строк REDUNDANT был единственным доступным форматом строк до MySQL 5.0.3. В этом выпуске этот формат строк был ретроактивно переименован в формат строк REDUNDANT. В том же выпуске был представлен формат строк COMPACT в качестве нового формата по умолчанию.

Использование формата строк REDUNDANT

Самый простой способ создать таблицу InnoDB, использующую формат строк REDUNDANT, — установить параметр таблицы ROW_FORMAT в значение REDUNDANT в операторе CREATE TABLE или ALTER TABLE.

Рекомендуется установить системную переменную innodb_strict_mode в значение ON при использовании этого формата.

Формат строк REDUNDANT поддерживается как форматом файлов Antelope, так и форматом файлов Barracuda, поэтому таблицы с этим форматом строк можно создавать независимо от значения системной переменной innodb_file_format.

Например:

SET SESSION innodb_strict_mode=ON;

CREATE TABLE tab (
   id int,
   str varchar(50)
) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;

Префиксы индексов с форматом строк REDUNDANT

Формат строк REDUNDANT поддерживает префиксы индексов до 767 байт.

Страницы переполнения с форматом строк REDUNDANT

Все форматы строк InnoDB могут хранить определённые типы данных на страницах переполнения. Это позволяет максимальному размеру строки в таблице InnoDB превышать максимальный объём данных, который может быть сохранён на основной странице данных строки. Более подробную информацию о других факторах, влияющих на максимальный размер строки для таблиц InnoDB, см. в разделе Максимальный размер строки.

В формате строк REDUNDANT переменные колонки, такие как колонки, использующие типы данных VARBINARY, VARCHAR, BLOB и TEXT, могут частично храниться на страницах переполнения.

InnoDB рассматривает использование страниц переполнения только если размер строки таблицы превышает половину значения innodb_page_size. Если размер строки больше этого значения, InnoDB выбирает переменные колонки для хранения на страницах переполнения до тех пор, пока размер строки не станет меньше половины значения innodb_page_size.

Для колонок VARBINARY, VARCHAR, BLOB и TEXT только значения, длина которых превышает 767 байт, рассматриваются для хранения на страницах переполнения. Байты, хранящие информацию о длине значения, не учитываются при расчёте этого предела. Этот предел основывается только на длине фактических данных колонки.

Колонки фиксированной длины, превышающие 767 байт, кодируются как колонки переменной длины, поэтому они также могут храниться на страницах переполнения, если размер строки таблицы превышает половину значения innodb_page_size. Несмотря на то, что колонка, использующая тип данных CHAR, может содержать не более 255 символов, колонка CHAR всё равно может превысить 767 байт в некоторых случаях. Например, колонка char(255) может превысить 767 байт, если кодировка символов кодировка равна utf8mb4.

Если колонка выбрана для хранения на страницах переполнения, то первые 767 байт значения колонки и 20-байтовый указатель на первую страницу переполнения колонки хранятся на главной странице. Каждая страница переполнения имеет размер [innodb-system-variables#innodb_page_size|innodb_page_size]. Если колонка слишком велика, чтобы уместиться на одной странице переполнения, она хранится на нескольких страницах переполнения. Каждая страница переполнения содержит часть данных и 20-байтовый указатель на следующую страницу переполнения, если такая страница существует.

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется заранее компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают позицию MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/innodb-redundant-row-format/

Spec-Zone.ru

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