MySQL MYROCKS 与 MyISAM 空间占用与性能的简单对比

测试数据量为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文件夹导入前后的大小进一步确认。

image

可以看到实际占用大小为835MB,与phpMyAdmin显示有较大偏差。

结论

表空间占用最小的是压缩后的MyISAM,但缺点较多。
另外还有个小彩蛋,MYROCKS开启ZSTD压缩之后实测效果非常恐怖,留给读者自行探索吧。