无法确定Cassandra中Select查询速度慢的原因

时间:2019-01-22 10:24:41

标签: python python-3.x cassandra

我在卡桑德拉的桌子上有一亿行。该架构为: id int, key varchar, row_hash varchar, version int,PK为:((version),id)。创建此架构的查询是:

c_sql = "CREATE TABLE IF NOT EXISTS {} (id varchar, version int, row_hash varchar, PRIMARY KEY((version), id))".format( self.table_name )

此语句是否将version用作分区键?

此外,随着#rows不断增加,我的选择查询显然需要很长时间:

row_check_query = "SELECT {} FROM {} WHERE {}={} AND {}='{}' ".format( "row_hash", self.table_name, "version", self.version, "id", key )

1 个答案:

答案 0 :(得分:2)

是的,version是分区键。 id是您的案例中的一个群集列。

您可以使用CQL跟踪来分析性能问题-https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshTracing.html

根据您的数据分布,您可能会遇到“宽行”情况,在单个version分区中有很多记录,不得不读取非常大的分区可能会花费一些时间。