gpt4 book ai didi

performance - Cassandra 读取程序究竟是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 09:20:48 29 4
gpt4 key购买 nike

我对 cassandra 有一点经验,但我对 cassandra 读取过程有一个疑问。

假设现在我们的 cassandra 数据库中的给定表有 7 个 sstables 如果我们执行任何未缓存在 memtable 中的读取查询那么 Cassandra 将查看 sstables。我的问题是:-

在此过程中,cassandra 会将所有 sstables(7) 加载到 memtable 中,或者它只会查看所有 sstables 并将相关行加载到 memtable 中,而不是加载所有 sstables?

提前致谢!!如果我解释有误,请纠正我。

如果有人可以解释/提及更好的资源来了解 sstables 的工作,那也很棒。

最佳答案

During this process will cassandra load all the sstables(7)

没有。 Cassandra 不会加载所有 7 SSTables .每个SSTable有一个 BloomFilter (内存中)表明在 SSTable 中拥有数据的可能性.

如果 BloomFilter 表明有可能在 SSTable 中有数据,它会查看 partition key cache并获得 compression offset map (在内存中)检索包含我们要查找的数据的压缩 block 。

  • 如果在分区键缓存中找到,则读取 (I/O) 压缩 block 以获取数据。
  • 如果未找到,它会查看分区摘要以获取索引条目的位置并将该位置 (I/O) 读入内存并继续执行较早的压缩偏移映射流。

首先,这个 Cassandra Reads我认为应该有帮助的链接并以图形方式描述了流程。从上面的链接中捕获以下读取路径以供快速引用。

Cassandra Read path

还有一件事,还有一个包含热行(经常访问)的行缓存,如果在 row cache 中找到,这不会导致命中/加载 SSTable。 .

通过这个rowcache了解行缓存和分区键缓存的链接。

Jeff Jirsa 分享的另一个精彩演示,Understanding Cassandra Table Options .真的值得一试。

换句话说,有 compaction这会定期发生以减少 SSTable 的数量并删除基于 tombstones 的行.

关于performance - Cassandra 读取程序究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35907579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com