首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KSQLDB拉拔性能

KSQLDB拉拔性能
EN

Stack Overflow用户
提问于 2022-11-14 21:59:06
回答 1查看 33关注 0票数 0

我知道KSQLDB中的每个分区都生成一个RocksDbTable。另外,KSQLDB重新分区,以便将相同的密钥存储在同一个分区中。

但是我找不到任何关于查询性能的答案。KSQLDB拉出的效率有多高?它扫描整张桌子吗?它是否查询在RocksDb中具有与其关联的索引的键?您可以禁用表扫描,但默认行为是什么?

既然它有RocksDB (它是一个键/值存储),那么它不需要任何中间的ksqldb操作就可以查找密钥,并且不需要扫描,这样做安全吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-14 22:49:43

RocksDB建立在LSM树(和SSTables)上。它是一个键值数据存储。

任何基于LSM的数据库都将数据存储在两个级别上。

  1. 红黑树在内存中
  2. 排序集表在磁盘

对于磁盘中的ups,它使用稀疏索引,如下所示。顾名思义,SSTable是一个保存在磁盘上的已排序的键数组。这一点在下面的图片中很明显。

如果在下面的片段中查找关键的“美元”。

查找步骤-

如果不存在,

  1. 在红黑树(或memtable)中查找“美元”,然后继续使用磁盘。磁盘处的
  2. :在稀疏索引上执行二进制搜索,以发现键“美元”介于"dog“和”
  3. “之间,从偏移量17208到19504,以便找到值。(这个偏移号映射到SSTable或驱动器上的物理文件)。一旦我们知道文件号,
  4. 。对SSTables中的所有条目进行排序。因此,再次应用二进制搜索。

所以,你可以看到,没有扫描。

对于不存在的键,它使用“布卢姆-过滤器”来推断键不存在,因此它不会扫描所有段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74438337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档