我们已经将我们的cassandra集群设置为aws ec2实例中的3个节点。每个实例都属于t2类型。大型
我们需要从卡桑德拉桌子上得到行数。
我们在卡桑德拉的一张桌子上放了90万张唱片。这张表中大约有91列。大多数记录都是文本数据类型。所有这些900k条记录都是单个分区密钥的一部分。
当我们尝试使用该分区键执行select count(*(查询时,查询超时。
然而,我们能够通过多次调用检索计数,每次调用仅获取10万条记录。这里唯一的缺点是所花费的时间约为1分3秒。
有没有其他方法可以让卡桑德拉的排数更快?我们是否需要改变数据建模方法来实现这一点?
Hades Architect是正确的。您肯定需要重新思考您的数据模型。
有了Cassandra,更多的分区有助于更好的数据分发。另一方面,大的分区会显著降低磁盘读取过程的速度。随着分区的增长,它最终将变得不可用。
在cassandra中还有其他方法可以更快地获得行数吗?
是。DSBulk工具具有内置机制,可以处理集群的分区范围,并可以读取/计数所有行。
dsbulk count
-k keyspacename
-t tablename
-u username
-p password
-h 10.0.0.2