November 1, 2012

MySQL5.6 RC innodb_log_compressed_pages 测试 及实现简述

MySQL5.6 RC增加了一个参数innodb_log_compressed_pages,以判定在压缩page时,是否在redo中存储压缩页数据。 最近把该特性在5.5.18上做了实现,从测试的效果来看,大大减少了redo log的写入量(降低到1/3~1/5),这会降低checkpoint的概率,并稍微增加了tps 以下数据,包括tps及每秒的log平均写入量(采集自status值Innodb_os_log_written) innodb_log_compressed_pages =0 innodb_log_compressed_pages =1 Prepare data  8333 rows/s     2.37MB/s 8130 rows/s 6.79MB/s update_non_index.lua 1880.32 per sec  3.26MB/s 1780.51 per sec 16.56MB/s update_index.lua 1896.34 per sec 3.19MB/s 1824.21 per sec 16.93MB/s oltp.lua 576.85 per sec 1.62MB/s 559.52 per sec 14.27MB/s 后续还需要做一些相关的crash恢复测试 //////////////////////////////////////////////////////////////// 其他:innodb_log_compressed_pages主要修改细节 原本innodb记录每个压缩Page到redo中,目的是为了防止在崩溃恢复时,压缩的算法发生改变,尤其在引入了可调整的压缩级别(innodb_compression_level)后,如果重启后,使用不同的level,就可能无法恢复出一致的压缩页 mlog的背景知识可以参考这个: http://www.mysqlops.com/2012/04/06/innodb-log2.html 目前对mini-transaction、redo以及崩溃恢复机制还不是特别了解,以下只是简述,并未深入。 1.btr_page_reorganize_low @增加参数 compression_level @在做page reorgnize之前,需要先写入一条mlog […]