Spec-Zone .ru
спецификации, руководства, описания, API

5.4.6.2. Включение Сжатию для Таблицы

Прежде, чем составить сжатую таблицу, удостоверьтесь innodb_file_per_table параметр конфигурации включается, и innodb_file_format устанавливается в Barracuda. Можно установить эти параметры в конфигурационном файле MySQL my.cnf или my.ini, или с SET оператор, не завершая работу сервера MySQL.

Чтобы включить сжатию для таблицы, Вы используете пункты ROW_FORMAT=COMPRESSED, KEY_BLOCK_SIZE, или оба в a CREATE TABLE или ALTER TABLE оператор.

Чтобы составить сжатую таблицу, Вы могли бы использовать операторы как они:

SET GLOBAL innodb_file_per_table=1;SET GLOBAL innodb_file_format=Barracuda;CREATE TABLE t1 (c1 INT PRIMARY KEY)  ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

Значение по умолчанию несжатый размер страниц данных InnoDB составляет 16 Кбит. В зависимости от комбинации значений опции MySQL использует размер страницы 1 Кбита, 2 Кбит, 4 Кбит, 8 Кбит, или 16 Кбит для .ibd файл таблицы. На фактический алгоритм сжатия не влияют KEY_BLOCK_SIZE значение; значение определяет, насколько большой каждый сжатый блок, который поочередно влияет, сколько строк может быть упаковано в каждую сжатую страницу.

Установка KEY_BLOCK_SIZE=16 обычно не приводит к большому сжатию, так как нормальный размер страницы InnoDB составляет 16 Кбит. Эта установка может все еще быть полезной для таблиц со многими долго BLOB, VARCHAR или TEXT столбцы, потому что такие значения часто сжимаются хорошо, и могли бы поэтому потребовать меньшего количества страниц переполнения как описано в Разделе 5.4.6.5, "Как Работы Сжатия для Таблиц InnoDB".

Все индексирует таблицы (включая кластерный индекс), сжимаются, используя тот же самый размер страницы, как определено в CREATE TABLE или ALTER TABLE оператор. Табличные атрибуты такой как ROW_FORMAT и KEY_BLOCK_SIZE не часть CREATE INDEX синтаксис, и игнорируется, если они определяются (хотя Вы видите их в выводе SHOW CREATE TABLE оператор).

Ограничения на Сжатые Таблицы

Поскольку версии MySQL до 5.1 не могут обработать сжатые таблицы, используя сжатие требует определения параметра конфигурации innodb_file_format=Barracuda, избегать случайно представлять проблемы совместимости.

Табличное сжатие также не доступно для системной табличной области InnoDB. Системная табличная область (располагают с интервалами 0, ibdata* файлы), может содержать пользовательские данные, но они также содержат внутреннюю информацию о системе, и поэтому никогда не сжимаются. Таким образом сжатие применяется только к таблицам (и индексирует), сохраненный в их собственных табличных областях, то есть, создаваемый с innodb_file_per_table опция включается.

Сжатие применяется ко всей таблице и всем, что его связанное индексирует, не к отдельным строкам, несмотря на имя пункта ROW_FORMAT.