测试数据量为1000W行左右的哈希表,有sha256、md5、qq三列和两个唯一索引。
MyISAM
未使用myisampack
压缩
结果为1004MB,接下来进行表压缩与索引重建
cd /www/server/mysql/data/hash2
myisampack email_hash_1
myisamchk -rq email_hash_1
过程非常慢,完成后大小如下
可以看到相比未压缩减少了约50%的空间占用,最终大小为639MB。
注意MyISAM表压缩后将无法进行写操作,且可能影响多行查询时的性能。
MYROCKS
MYROCKS的表文件是分散存储的,没法直接观察文件,不过可以通过phpMyAdmin查看。
看起来不是很准,通过对比.rocksdb
文件夹导入前后的大小进一步确认。
可以看到实际占用大小为835MB,与phpMyAdmin显示有较大偏差。
结论
表空间占用最小的是压缩后的MyISAM,但缺点较多。
另外还有个小彩蛋,MYROCKS开启ZSTD压缩之后实测效果非常恐怖,留给读者自行探索吧。