微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RocksDB 总内存使用量

如何解决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 * 3MB,因为有 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?