当前位置: 首页 > 知识库问答 >
问题:

在Cassandra中为一个partitionID获取许多(500k)行的开销

裴浩歌
2023-03-14

我想了解在Cassandra(V1.2)中获取顺序存储在磁盘中的大量行时,所涉及的开销是什么。

    null

从时间戳='…'的模式中选择*

每个时间戳有500k个这样的行。我已经发现,进行分页将比试图一次获取所有数据提供更好的吞吐量。因此,使用1000/10000的页面大小获取500K行(40 MB)大约需要25-30秒(我使用的是Astyanax)。我有以下问题:

(A)我正在查询的所有数据是否会按顺序存储在磁盘中以获得特定的时间戳(是的,我已经运行了compact命令)?

共有1个答案

殷轶
2023-03-14

A)这取决于您为集群配置的分区器(在cassandra.yaml文件中)由于您是新手,您可能使用默认的分区器(MurMur3Partitioner),这意味着您的问题的答案是否定的,数据被拆分到1个或多个物理节点中的不同节点(或虚拟节点)中,这意味着数据存储在磁盘上的不同部分和不同的物理节点上。

B)对A的回答是否定的,所以可能是否定的

C)对B的回答是否定的,但是您应该能够为不同的查询计时并检测瓶颈以提高速度。在运行以下命令后使用cqlsh:

D)这应该不成问题,但以防万一,在cqlsh上运行相同的查询,并跟踪请求的时间,如C中所解释的那样

希望有帮助!

 类似资料:
  • rank ▲ ✰ vote url 25 587 87 877 url 在一行里获取多个异常 我知道这样: try: # 可能错的地方 except: # 如果错了执行这里 也知道这样: try: # 可能错的地方 except IDontLikeYourFaceException: # 给爷笑一个 except YouAreTooShortException:

  • 问题内容: 如果每个员工有多个联系方式,我将获得多行,但我只希望每位员工列出他们的姓,名,部门名称,电子邮件和电话。 所以它应该像这样 这是我所拥有的,但不起作用: 我用以下查询解决了它: 问题答案: 如果要选择,则在子查询中,这两个联接可能是不必要的: 由于它们,您得到的行与特定人的联系人一样多。 最终查询可能类似于:

  • 我正在尝试读取一个大的XLSX文件。Excel文件大约有500k行,我需要读col 2。 它一直打印到第39723行,然后抛出以下异常 main.java:484=If(!cell.getStringCellValue().ToString().trim().IsEmpty())如果我删除该行并只打印行号,就可以正常工作。我需要帮助如何获得col2的字符串值。

  • 我是Cassandra的新手,我想看看它是否适合我的数据查询需求。我正在一个表中填充测试数据,并使用Golang中的cql客户端获取它们。 我能想到的一种方法是“从tablename中选择*,其中timestamp<=t2和timestamp>=t1;”然后查找返回的行数组中第一个条目和最后一个条目之间的差异。这样做最好吗?由于不支持MIN和MAX查询,是否有一种方法可以在表中找到小于给定值的最大

  • 我现在花了几个小时在这里阅读这个问题的解决方案,就像这样:从setTimeout获取返回值 但是我找不到任何解决问题的方法来获取removeCount值。我还试图添加一个promise,但我不知道如何使用增量。