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

5.4.6.1. Краткий обзор Табличного Сжатия

Поскольку процессоры и кэш-память увеличили в скорости больше чем устройства памяти на диске, много рабочих нагрузок ограничены диском. Сжатие данных включает меньшему размеру базы данных, уменьшенному вводу-выводу, и улучшенной пропускной способности, по маленькой стоимости увеличенного использования ЦП. Сжатие особенно ценно для интенсивных чтением приложений на системах с достаточным количеством RAM, чтобы сохранить часто используемые данные в памяти.

Таблица InnoDB, составленная с ROW_FORMAT=COMPRESSED может использовать меньший размер страницы на диске чем обычное значение по умолчанию 16 Кбит. Меньшие страницы требуют, чтобы меньше ввода-вывода читало из и записало в диск, который особенно ценен для устройств SSD.

Размер страницы определяется через KEY_BLOCK_SIZE параметр. Различный размер страницы означает, что таблица должна быть в его собственном .ibd файл, а не в системной табличной области, которая требует включения innodb_file_per_table опция. Уровень сжатия является тем же самым независимо от KEY_BLOCK_SIZE значение. Поскольку Вы определяете меньшие значения для KEY_BLOCK_SIZE, Вы извлекаете пользу ввода-вывода из все более и более меньших страниц. Но если Вы определяете значение, которое является слишком маленьким, есть дополнительные издержки, чтобы реорганизовать страницы, когда значения данных не могут быть сжаты достаточно, чтобы приспособить многократные строки в каждой странице. Есть жесткий предел как небольшой KEY_BLOCK_SIZE может быть для таблицы, основанный на длинах ключевых столбцов для каждого из индексирует. Определите значение, которое является слишком маленьким, и CREATE TABLE или ALTER TABLE сбои оператора.

В пуле буферов сжатые данные сохранены в маленьких страницах с размером страницы, основанным на KEY_BLOCK_SIZE значение. Для извлечения или обновления значений столбцов, MySQL также создает страницу 16 Кбит в пуле буферов с несжатыми данными. В пределах пула буферов любые обновления к несжатой странице также переписываются назад к эквивалентной сжатой странице. Вы, возможно, должны были бы измерить свой пул буферов, чтобы разместить дополнительные данные и сжатых и несжатых страниц, хотя несжатые страницы выселяются из пула буферов, когда пространство является необходимым, и затем несжатым снова на следующем доступе.