1公浪、原理
mysql支持兩種壓縮模式:compressed和Transparent Page Compression【透明頁(yè)壓縮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壓縮比高但速度慢腌巾,測(cè)試5000w表需要30min
- compressed 需要配合innodb_file_format = Barracuda 否則壓縮無(wú)效(不會(huì)報(bào)錯(cuò),只有警告信息)
- compressed key_block_size只能指定為16的因數(shù)屋灌,如:4,8,16,默認(rèn)是page_size的一半腮猖。數(shù)據(jù)的具體形式?jīng)Q定了壓縮程度狸棍,通常會(huì)壓縮50%以上身害。通過(guò)指定innodb_compression_level級(jí)別調(diào)整壓縮比和cpu的開銷(可調(diào)整到1~9,默認(rèn)是6草戈,級(jí)別越低壓縮比越高CPU開銷越大)
對(duì)于具有列值較長(zhǎng)的表塌鸯,使用compressed壓縮表格式往往更高效 - TPC壓縮利用文件系統(tǒng)‘打孔’技術(shù),如果innodb_page_size = 16K唐片,文件系統(tǒng)塊大小為4K丙猬,則頁(yè)面數(shù)據(jù)必須壓縮到小于或等于12K才能進(jìn)行‘打孔’
TPC壓縮需要linux文件系統(tǒng)支持 hole punching功能(阿里云支持)
2、測(cè)試
傳統(tǒng)壓縮
TPC壓縮
線上應(yīng)用表結(jié)構(gòu)
MySQL存儲(chǔ)空間使用量