17.9.1.1 Обзор сжатия таблиц
Поскольку процессоры и кэш-память стали быстрее устройств хранения данных, многие рабочие нагрузки . Данные позволяют уменьшить размер базы данных, сократить ввод-вывод и улучшить пропускную способность, с небольшими затратами на увеличение использования ЦП. Сжатие особенно полезно для приложений с интенсивным чтением, на системах с достаточным объемом ОЗУ для хранения часто используемых данных в памяти.
Таблица InnoDB, созданная с помощью ROW_FORMAT=COMPRESSED, может использовать меньший на диске, чем заданное значение innodb_page_size. Меньшие страницы требуют меньше операций ввода-вывода для чтения и записи на диск, что особенно ценно для устройств.
Размер сжатой страницы задается с помощью параметра CREATE TABLE или ALTER TABLE KEY_BLOCK_SIZE. Разный размер страницы требует размещения таблицы в файловой системе или пространстве, а не в , так как системное пространство не может хранить сжатые таблицы. Для получения дополнительной информации см. Раздел 17.6.3.2, «Файловые пространства таблиц на основе каждой таблицы» и Раздел 17.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.