GPS轨迹数据是个无底洞,越来越大,目前单天已超过2000万,每天占空间5G左右
由于这些数据不用更新,并且我是按天分表的,过了当天就只需要解决很低频率的读请求,所以很适合压缩
主要关注压缩比

未压缩前数据量

  • 物理大小 5.30 GB
  • 表空间大小 5.22 GB
  • 索引空间大小 1.12 GB
  • 数据空间大小 4.10 GB
  • 碎片率 0.04%
  • 行 22548895
  • 平均行长 195 B

默认压缩

ALTER table ROW_FORMAT=COMPRESSED;
  • 用时 390s

压缩结果

  • 物理大小 3.07 GB,压缩率 57%
  • 表空间 3.01 GB
  • 索引空间 603.48 MB
  • 碎片率 0.08
  • 行长 110B

key_block_siz

  • 改为4测试
  • 物理文件大小为 4.08G,skip
  • 结论,改了反而占用空间越大了

innodb_compression_level

  • 改为8测试(原来是6)
  • 改为7, 测试0707表 4.98 --> 2.87,和6差不比 57%
  • 改为5, 测试0705表 4.91 GB-> 2.79 56.8%
  • 改回6,测试 0706表, 4.89-->2.82 57.6
  • 改为2,测试0625表, 4.85--> 2.82
  • 结论,P用没有,压缩比和cpu占用率没有变化

结论

  • 数据和索引都会压缩
  • ALTER table 时CPU占用率70%左右,影响不大(正常cpu占用是20以内)
  • 测试基本没影响到查询性能