传统上,InnoDB
压缩 功能主要推荐用于只读或以读取为主的 工作负载,例如在 数据仓库 配置中。 SSD 存储设备的兴起(速度快但相对较小且昂贵)使得压缩对于 OLTP
工作负载也很有吸引力:高流量、交互式网站可以通过将压缩表与频繁执行 INSERT
、UPDATE
和 DELETE
操作的应用程序结合使用来减少其存储需求及其每秒 I/O 操作数 (IOPS)。
这些配置选项允许您调整压缩对特定 MySQL 实例的工作方式,重点是针对写密集型操作的性能和可扩展性
innodb_compression_level
允许您调高或调低压缩程度。值越高,存储设备上可以容纳的数据越多,但代价是在压缩过程中 CPU 开销更大。当存储空间不重要或您预计数据不是特别可压缩时,较低的值可以减少 CPU 开销。innodb_compression_failure_threshold_pct
指定更新压缩表期间 压缩失败 的截止点。超过此阈值后,MySQL 会开始在每个新的压缩页面中保留额外的可用空间,并动态调整可用空间量,直至达到innodb_compression_pad_pct_max
指定的页面大小百分比innodb_compression_pad_pct_max
允许您调整每个 页面 中为记录压缩行更改而保留的最大空间量,而无需再次压缩整个页面。值越高,无需重新压缩页面即可记录的更改越多。MySQL 为每个压缩表中的页面使用可变数量的可用空间,仅当指定百分比的压缩操作在运行时“失败”时,才需要执行拆分压缩页面的昂贵操作。innodb_log_compressed_pages
允许您禁用将 重新压缩的 页面 的镜像写入 重做日志。对压缩数据进行更改时,可能会发生重新压缩。默认情况下启用此选项,以防止在恢复期间使用不同版本的zlib
压缩算法时可能发生的损坏。如果您确定zlib
版本不会更改,请禁用innodb_log_compressed_pages
以减少修改压缩数据的工作负载的重做日志生成。
因为处理压缩数据有时需要同时将页面的压缩版本和未压缩版本保存在内存中,所以在使用 OLTP 样式工作负载进行压缩时,请准备好增加 innodb_buffer_pool_size
配置选项的值。