嗨,我在python中使用cassandra。我在cassandra中有一个表,其中line_id(uuid)为主键。我大约有2000000条记录(每个分区只有一条记录)。当我想获取记录数时:
NumberPartitionedLine.objects.count()
我收到此错误:
Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'consistency': 'LOCAL_ONE', 'received_responses': 0, 'required_responses': 1}
当我在 razorsql 或 datagrip 中运行查询select count(*) from number_partitioned_line
时,
我收到超时错误,无法获取结果。
是什么原因?
答案 0 :(得分:1)
您正在尝试从200万个分区中读取数据,而在Cassandra中确实不建议这样做。
执行count(*)会给节点增加很多压力,如果节点不受分区键的限制,并且由于每个分区只有一个记录,则无法分区。
在您的情况下,最好使用计数器表-https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCountersConcept.html
您可以在yaml中调整内存分配或增加超时时间,但这只会有助于将问题推迟到以后。