Spec-Zone .ru
спецификации, руководства, описания, API
|
Поскольку процессоры и кэш-память увеличили в скорости больше чем устройства памяти на диске, много рабочих нагрузок ограничены диском. Сжатие данных включает меньшему размеру базы данных, уменьшенному вводу-выводу, и улучшенной пропускной способности, по маленькой стоимости увеличенного использования ЦП. Сжатие особенно ценно для интенсивных чтением приложений на системах с достаточным количеством 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 Кбит в пуле буферов с несжатыми данными. В пределах пула буферов любые обновления к несжатой
странице также переписываются назад к эквивалентной сжатой странице. Вы, возможно, должны были бы измерить свой
пул буферов, чтобы разместить дополнительные данные и сжатых и несжатых страниц, хотя несжатые страницы выселяются из пула буферов, когда
пространство является необходимым, и затем несжатым снова на следующем доступе.