#### 15.9.1.6 OLTP 工作负载的压缩

传统上，`InnoDB` [压缩](glossary.html#glos_compression)功能主要推荐用于只读或只读[工作量](glossary.html#glos_workload)，例如在一个[数据仓库](glossary.html#glos_data_warehouse)配置。的上升[固态硬盘](glossary.html#glos_ssd)速度快但相对较小且价格昂贵的存储设备使得压缩对于`OLTP`工作负载：高流量、交互式网站可以降低其存储需求和每秒 I/O 操作（[IOPS](glossary.html#glos_iops)) 通过将压缩表与经常执行的应用程序一起使用[`插入`](insert.html),[`更新`](update.html)， 和[`删除`](delete.html)操作。

这些配置选项可让您调整特定 MySQL 实例的压缩方式，重点是写入密集型操作的性能和可扩展性：

-   [`innodb_compression_level`](innodb-parameters.html#sysvar_innodb_compression_level)可让您向上或向下调整压缩程度。较高的值可让您将更多数据放入存储设备，但压缩期间会增加 CPU 开销。当存储空间不重要或您期望数据不是特别可压缩时，较低的值可以减少 CPU 开销。

-   [`innodb_compression_failure_threshold_pct`](innodb-parameters.html#sysvar_innodb_compression_failure_threshold_pct)指定一个截止点[压缩失败](glossary.html#glos_compression_failure)在更新压缩表期间。当超过这个阈值时，MySQL 开始在每个新的压缩页面中留出额外的可用空间，动态调整可用空间量，直至达到指定的页面大小百分比[`innodb_compression_pad_pct_max`](innodb-parameters.html#sysvar_innodb_compression_pad_pct_max)

-   [`innodb_compression_pad_pct_max`](innodb-parameters.html#sysvar_innodb_compression_pad_pct_max)让您调整每个内部保留的最大空间量[页](glossary.html#glos_page)记录对压缩行的更改，而无需再次压缩整个页面。该值越高，无需重新压缩页面即可记录的更改越多。MySQL 为每个压缩表中的页面使用可变数量的可用空间，仅当指定百分比的压缩操作“[失败](glossary.html#glos_compression_failure)” 在运行时，需要昂贵的操作来拆分压缩页面。

-   [`innodb_log_compressed_pa​​ges`](innodb-parameters.html#sysvar_innodb_log_compressed_pages)允许您禁用图像的写入[重新压缩](glossary.html#glos_compression) [页面](glossary.html#glos_page)到[重做日志](glossary.html#glos_redo_log).当对压缩数据进行更改时，可能会发生重新压缩。默认情况下启用此选项，以防止在不同版本的`zlib`恢复期间使用压缩算法。如果您确定`zlib`版本不变，禁用[`innodb_log_compressed_pa​​ges`](innodb-parameters.html#sysvar_innodb_log_compressed_pages)减少修改压缩数据的工作负载的重做日志生成。

    因为处理压缩数据有时需要同时在内存中保存页面的压缩和未压缩版本，所以在对 OLTP 风格的工作负载使用压缩时，请准备好增加[`innodb_buffer_pool_size`](innodb-parameters.html#sysvar_innodb_buffer_pool_size)配置选项。
