Spec-Zone .ru
спецификации, руководства, описания, API
|
Прежде, чем составить сжатую таблицу, удостоверьтесь 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;
Если Вы определяете ROW_FORMAT=COMPRESSED
, можно
опустить KEY_BLOCK_SIZE
; значение по умолчанию сжатый размер страницы 8
Кбит используется.
Если Вы определяете KEY_BLOCK_SIZE
, можно опустить
ROW_FORMAT=COMPRESSED
; сжатие включается автоматически.
Определить оптимальное значение для KEY_BLOCK_SIZE
,
обычно Вы создаете несколько копий той же самой таблицы с различными значениями для этого пункта, затем
измеряете размер получающегося .ibd
файлы и видят, как хорошо каждый
выполняет с реалистической рабочей
нагрузкой.
Для дополнительных связанных с производительностью параметров конфигурации см. Раздел 5.4.6.3, "Настраивая Сжатие для Таблиц InnoDB".
Значение по умолчанию несжатый размер страниц
данных 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
.