美文网首页mysql
MySQL之TPC压缩

MySQL之TPC压缩

作者: 社会我大爷 | 来源:发表于2022-02-28 23:36 被阅读0次

1、原理

mysql支持两种压缩模式:compressed和Transparent Page Compression【透明页压缩TPC 5.7】
  • 开启compressed
    CREATE TABLE t2 (c1 INT) row_format=compressed,key_block_size=8;
    alter table t2 row_format=compressed,key_block_size=8;
  • 开启TPC
    CREATE TABLE t1 (c1 INT) COMPRESSION="zlib | lz4";
    alter table t1 compression="zlib | lz4";
    optimzie table t1;
  • 禁用TPC
    alter table t1 compression="none";
    optimzie table t1;

zlib压缩比高但速度慢,测试5000w表需要30min

  • compressed 需要配合innodb_file_format = Barracuda 否则压缩无效(不会报错,只有警告信息)
  • compressed key_block_size只能指定为16的因数,如:4,8,16,默认是page_size的一半。数据的具体形式决定了压缩程度,通常会压缩50%以上。通过指定innodb_compression_level级别调整压缩比和cpu的开销(可调整到1~9,默认是6,级别越低压缩比越高CPU开销越大)
    对于具有列值较长的表,使用compressed压缩表格式往往更高效
  • TPC压缩利用文件系统‘打孔’技术,如果innodb_page_size = 16K,文件系统块大小为4K,则页面数据必须压缩到小于或等于12K才能进行‘打孔’
    TPC压缩需要linux文件系统支持 hole punching功能(阿里云支持)

2、测试

传统压缩
TPC压缩
线上应用表结构
MySQL存储空间使用量

相关文章

网友评论

    本文标题:MySQL之TPC压缩

    本文链接:https://www.haomeiwen.com/subject/gforrrtx.html