October 6, 2012

[MySQL 特性] MySQL5.6.7 对压缩表的改进

5.6.7已经RC,其中关于压缩表部分,引进了大多数Facebook的改进 1.可配置的zlib压缩级别 innodb_compression_level 用于动态调整zlib的压缩级别,从1-9,默认为6,越小压缩效果越差,但压缩速度越快;值越大,压缩效果越好,可能会减小压缩失败及page split, 但速度越慢,有更多的CPU开销。 2. innodb_log_compressed_pages 控制压缩page是否被记录到redo中,这会减少redo产生的数据量,可能会提升throughput 3.增加adaptive padding功能,通过在page中留下空白来防止减少page分裂,Facebook的实现是在启动mysqld后,对压缩表中的压缩失败的page进行采样,以计算出合适的留白数。 增加了两个参数: innodb_compression_failure_threshold_pct  当压缩失败rate大于这个值时,会增加padding来减小失败率,为0表示禁止该padding.(官方文档貌似有误,已report)  innodb_compression_pad_pct_max 一个page中最大允许留白的百分比 4.新的关于压缩表的i_s表:  innodb_cmp_per_index innodb_cmp_per_index_reset 由于这些表里记载了每个索引的压缩信息,因此会产生一些额外的开销,通过选项 innodb_cmp_per_index_enabled 来控制开关 例如: mysql> select * from  innodb_cmp_per_index\G *************************** 1. row ***************************   database_name: cmp2k8      table_name: com1@@@      index_name: PRIMARY    compress_ops: 34999 compress_ops_ok: 34150   compress_time: 13  uncompress_ops: 424 uncompress_time: 0 1 row in set (0.00 sec) […]