17.9.1.6 OLTP 工作负载压缩
传统上,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
允许您禁用将页面的图像写入到redo日志中。重新压缩可能会在更改压缩数据时发生。这项选项默认启用,以防止在恢复过程中使用不同版本的zlib压缩算法而导致的损坏。如果您确定zlib版本不会更改,可以禁用innodb_log_compressed_pages
以减少工作负载中修改压缩数据的redo日志生成。
由于使用压缩数据时有时需要同时在内存中保留压缩和未压缩版本的页面,因此在使用压缩与OLTP风格工作负载时,准备增加innodb_buffer_pool_size
配置选项的值。