我很惊讶以前没有提出这个问题。
假设我们在cassandra中有一个巨大的表,我们需要在其中获得估计的行数(不精确,只是近似)。
显然简单select count(*) from table
效率不高,可能需要花费很多时间。我们需要一些肮脏而快速的东西。
Datastax博客建议the following:
我不关心确切的数字,我可以估算一下吗?
因为Cassandra知道每个SSTable中有多少行 有可能得到一个估计。 'nodetool cfstats'输出告诉你 这些计数在“密钥数(估计)”行中。这是总和 每个SStable中的行数(由于使用了索引而再次近似) 但默认情况下不能超过128。)
我的问题:我们可以使用DataStax Enterprise Java driver执行相同的操作吗?
P.S。我无法更改表结构或其他任何内容。考虑我使用遗留架构。换句话说,我对添加计数器或其他特殊字段等变通方法不感兴趣。
答案 0 :(得分:6)
Cassandra也通过JMX暴露了近似计数(从“nodetool cfstats”获得)。代码可以挂钩到此JMX度量标准,以编程方式获取计数。
EstimatedPartitionCount Gauge大约中的键数 表
{
"type": "READ",
"mbean": "org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=*",
"attribute": "Count"
}
以下是有关所有JMX指标的link。