我正在看一个示例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或64 or的最大内存?
为什么缓存是2.5GB?(2 * (1024 ** 3))是20亿,而不是25亿?
发布于 2021-07-01 08:11:51
这是否意味着它使用2.5GB或64 or的最大内存?
不是的。这意味着块缓存将花费2.5GB,内存中的表将花费64 * 3MB,因为有3 (opts.max_write_buffer_number)缓冲区,每个缓冲区的大小为64 MB (opts.write_buffer_size)。除此之外,Rocksdb还需要一些其他内存来存储索引和bloom文件块。详细信息请查看这。
为什么缓存是2.5GB?(2 * (1024 ** 3))是20亿,而不是25亿?
因为有2GB的未压缩块缓存(block_cache)和0.5GB的压缩块缓存(block_cache_compressed)。
https://stackoverflow.com/questions/67730600
复制相似问题