一 简介:这一系列我们要进行如何瘦身mysql
二 目的:通过提高CPU利用率和节约成本,降低数据库容量及I/O负载,从而使数据吞吐率得到显著提高
三 方法:
利用innodb的COMPRESSED
四 如何开启
第一,mysql的版本需要大于5.5,mysql系统表是无法进行压缩的
第二,设置innodb_file_format=barracuda
第三,create table或者alter talble 增加 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;(默认的key_block_size=16)
五 对于现有的表如何进行转化压缩
alter table test KEY_BLOCK_SIZE=8; 默认是16,数值越小压缩率越高,但是解压所消耗的资源率越高
六 目标:
1 针对 数据短时间用不到而且需要保留的大表,可以进行压缩和处理->冷表
2 针对 只有单一insert和select业务的大表,考虑进行压缩和处理
3 针对 频繁业务的大表,不推荐进行压缩处理,可能会影响并发
七 相关参数
innodb_compression_level:决定压缩程度的参数 如果你设置比较大,那么压缩比较多,耗费的CPU资源也较多;相反,如果设置较小的值,那么CPU占用少。默认值6,可以设置0-9
innodb_compression_failure_threshold_pct:默认值5,范围0到100.设置中断点避免高昂的压缩失败率。
innodb_compression_pad_pct_max:指定在每个压缩页面可以作为空闲空间的最大比例,该参数仅仅应用在设置了innodb_compression_failure_threshold_pct不为零情况下,并且压缩失败率通过了中断点。默认值50,可以设置范围是0到75.
八 注意事项
1 5.6 默认是不支持压缩的 最好在配置文件和全局变量都添加 innodb_file_format=barracuda
2 Barracuda兼容Antelope格式,所以不必担心修改后会引起以前的表相关问题
3 修改完后show create table 会发现出现一行KEY_BLOCK_SIZE
4 压缩效果并非对所有表都很明显,需要注意,关于blob varchar大于255 TEXT等大字段类型压缩能力很差