Spec-Zone.ru › MariaDB

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

MariaDB до 10.2.1

В MariaDB 10.2.1 и ранее, по умолчанию используется формат строк COMPACT.

Формат строк COMPACT похож на формат строк REDUNDANT, но он хранит данные более компактно, что требует примерно на 20% меньше места.

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

MariaDB начиная с 10.2.2

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

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

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

Например:

SET SESSION innodb_strict_mode=ON;

CREATE TABLE tab (
   id int,
   str varchar(50)
) ENGINE=InnoDB ROW_FORMAT=COMPACT;
MariaDB до 10.2.1

В MariaDB 10.2.1 и ранее по умолчанию используется формат строк COMPACT. Поэтому в этих версиях самый простой способ создать таблицу InnoDB, использующую формат строк COMPACT, — не устанавливать опцию таблицы ROW_FORMAT вообще в операторе CREATE TABLE или ALTER TABLE.

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

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

Например:

SET SESSION innodb_strict_mode=ON;

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

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

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

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

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

В формате строк COMPACT переменные колонки, такие как колонки с типами данных 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_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-compact-row-format/

Spec-Zone.ru

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