传统上,InnoDB
压缩功能主要用于只读或主要读取的工作负载,例如在数据仓库配置中。随着固态硬盘存储设备的出现,它们快速但相对小且昂贵,压缩也变得对OLTP工作负载非常有吸引力:高流量、交互式网站可以通过使用压缩表来减少存储要求和每秒输入/输出操作数(IOPS),这些应用程序频繁地执行INSERT
、UPDATE
和DELETE
操作。
这些配置选项允许您调整压缩方式,以适应特定的 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版本不会更改,可以禁用innodb_log_compressed_pages
以减少重做日志生成对于修改压缩数据的工作负载。
因为使用压缩数据有时需要同时在内存中保持压缩和未压缩版本的页,因此在使用压缩与 OLTP 风格工作负载时,需要增加innodb_buffer_pool_size
配置选项的值。