如何解决RocksDB 总内存使用量
我正在查看 RocksDB 选项配置示例:
opts = rocksdb.Options()
opts.create_if_missing = True
opts.max_open_files = 300000
opts.write_buffer_size = 67108864
opts.max_write_buffer_number = 3
opts.target_file_size_base = 67108864
opts.table_factory = rocksdb.BlockBasedTableFactory(
filter_policy=rocksdb.BloomFilterPolicy(10),block_cache=rocksdb.LRUCache(2 * (1024 ** 3)),block_cache_compressed=rocksdb.LRUCache(500 * (1024 ** 2)))
https://python-rocksdb.readthedocs.io/en/latest/tutorial/
它说
它分配了 2.5G 的缓存,使用布隆过滤器进行更快的查找和 在写入 .sst 文件之前在内存中保留更多数据 (64 MB)。
这是否意味着它使用的最大内存为 2.5GB 或 64MB?
为什么缓存是 2.5GB? (2 * (1024 ** 3))
是 20 亿,不是 25 亿?
解决方法
这是否意味着它使用的最大内存为 2.5GB 或 64MB?
没有。这意味着块缓存将花费 2.5GB,内存表将花费 64 * 3
MB,因为有 3 个 (opts.max_write_buffer_number
) 缓冲区,每个缓冲区的大小为 64MB (opts.write_buffer_size
) .除此之外,Rocksdb 还需要一些其他内存用于索引和布隆文件块。查看this了解详情。
为什么缓存是 2.5GB? (2 * (1024 ** 3)) 是 20 亿,不是 25 亿?
因为有 2GB 未压缩块缓存 (block_cache
) 和 0.5GB 压缩块缓存 (block_cache_compressed
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。