MyRocks (MySql) 和 Cassandra 都使用 LSM 架构来存储它们的数据。所以我用 MyRocks 作为存储引擎在 MySql 和 Cassandra 中填充了大约 500 万行。在 Cassandra 中它只需要 1.7 GB 的磁盘空间,而在以 MyRocks 作为存储引擎的 MySql 中,它需要 19 GB。
我错过了什么吗?两者使用相同的 LSM 机制。但为什么它们的数据大小不同?
更新:
我猜它与文本列有关。我的表结构是(bigint、bigint、varchar、文本)。
- 填充的行数:300 000
- 在 MyRocks 中数据大小为 185MB
- 在 Cassandra 中 - 13 MB。
但是如果我删除文本列,那么:
- MyRocks - 21.6 MB
- Cassandra - 11 MB
对这种行为有什么想法吗?
最佳答案
上述行为的原因是由于 rocksdb_block_size 设置为 4kb。由于数据 block 较小,压缩器发现要压缩的数据量较小。将它设置为 16kb 解决了这个问题。现在我得到了与 cassandra 相似的数据大小。
关于mysql - RocksDB 与 Cassandra ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075892/