Cassandra如何处理select查询?

Cassandra如何处理select查询?,cassandra,garbage-collection,partitioning,Cassandra,Garbage Collection,Partitioning,我正在设计卡桑德拉专栏系列 在加载更高密度的数据后,我在选择时遇到了GC更高的情况。也就是说,分区中的数据量增加了。同样对于低密度数据,它也可以正常工作 我想知道Cassandra如何执行SELECT查询(同时指定了分区和集群键) 当我们执行SELECT时,分区中的整个数据集是否加载到内存中 大量的分区键会影响性能吗?Cassandra不会将整个分区加载到内存中,但会加载IndexInfo对象,这有助于Cassandra在分区内找到相关的CQL行。这些是短期的java对象,会产生相当大的堆压力(

我正在设计卡桑德拉专栏系列

在加载更高密度的数据后,我在选择时遇到了GC更高的情况。也就是说,分区中的数据量增加了。同样对于低密度数据,它也可以正常工作

我想知道Cassandra如何执行SELECT查询(同时指定了分区和集群键)

当我们执行SELECT时,分区中的整个数据集是否加载到内存中


大量的分区键会影响性能吗?

Cassandra不会将整个分区加载到内存中,但会加载IndexInfo对象,这有助于Cassandra在分区内找到相关的CQL行。这些是短期的java对象,会产生相当大的堆压力(GC暂停)-这是一个设计问题,将在CASSANDRA-9754(称为Birch,索引数据结构的b树实现)中解决


在cassandra-4.0发布之前,您的最大分区大小应以100MB为目标,并将较大的分区拆分为较小的分区。

请添加查询示例,并详细说明高密度和低密度的含义。它是使用或不使用集群键进行查询,并且每个分区在关联的集群列上是高还是低?表的结构如下-主键(A、B、C)。表中也有一些字段(p、q、r、s、t)。示例查询-从表中选择p、q、r、s、t,其中A=?B=?;数据密度随着插入更多的B和C项而增加。您是执行了删除查询还是显式插入null?@ashrafulisam未执行删除查询。谢谢Jeff。如果我增加分区数(分区计数<2^63),它将如何影响Cassandra的性能?特别是读性能?很多分区都很好。如果您有那么多数据,您甚至可以超过2^63(cassandra可以/确实很好地处理对同一令牌的多个分区键散列)。如果您一起查询数据,您实际上只需要分区中的数据,cassandra可以将数据(已排序)聚集到磁盘上,并分组抓取。如果您没有从一个分区中获取很多行,请将其拆分。此外,如果您有多个分区,您可以一次发出多个异步SELECT调用,并更高效地并行化查询。