14.9.1.1 Обзор сжатия таблиц
Поскольку процессоры и кэш-память увеличили свою скорость больше, чем устройства хранения данных на диске, многие рабочие нагрузки . Данные позволяют уменьшить размер базы данных, уменьшить ввод-вывод и улучшить пропускную способность с небольшой ценой увеличения использования ЦП. Сжатие особенно полезно для приложений с интенсивным чтением на системах с достаточным объемом оперативной памяти для хранения часто используемых данных в памяти.
Таблица InnoDB, созданная с помощью ROW_FORMAT=COMPRESSED, может использовать меньший размер на диске, чем заданное значение innodb_page_size. Более мелкие страницы требуют меньше ввода-вывода для чтения и записи на диск, что особенно ценно для устройств хранения данных.
Размер сжатой страницы задается параметром CREATE TABLE или ALTER TABLE KEY_BLOCK_SIZE. Разный размер страницы требует, чтобы таблица была размещена в табличном пространстве файла или в общем табличном пространстве, а не в системном табличном пространстве, поскольку системное табличное пространство не может хранить сжатые таблицы. Дополнительную информацию см. в разделе 14.6.3.2 «Табличные пространства на основе файлов» и разделе 14.6.3.3 «Общие табличные пространства».
Уровень сжатия одинаков независимо от значения KEY_BLOCK_SIZE. При указании меньших значений для KEY_BLOCK_SIZE вы получаете преимущества ввода-вывода от все более мелких страниц. Но если вы укажете слишком маленькое значение, возникнет дополнительная нагрузка на переорганизацию страниц, когда значения данных нельзя достаточно сжать, чтобы уместить несколько строк на каждой странице. Существует жесткое ограничение на то, насколько маленьким может быть KEY_BLOCK_SIZE для таблицы, основанное на длинах ключевых столбцов каждого из ее индексов. Укажите слишком маленькое значение, и операция CREATE TABLE или ALTER TABLE завершится с ошибкой.
В кэше буферов сжатые данные хранятся на небольших страницах с размером страницы, основанным на значении KEY_BLOCK_SIZE. Для извлечения или обновления значений столбцов MySQL также создает несжатую страницу в кэше буферов со несжатыми данными. Внутри кэша буферов любые обновления несжатой страницы также переписываются обратно в эквивалентную сжатую страницу. Возможно, вам потребуется увеличить размер кэша буферов для размещения дополнительных данных сжатых и несжатых страниц, хотя несжатые страницы удаляются из кэша буферов при необходимости освобождения места, а затем снова распаковываются при следующем доступе.
© 2025 Oracle
Licensed under the GPLv2 License.