Cassandra的table上有一亿行。架构为: id int, key varchar, row_hash varchar, version int
pk是:((版本),id)。创建此架构的查询是:
c_sql = "CREATE TABLE IF NOT EXISTS {} (id varchar, version int, row_hash varchar, PRIMARY KEY((version), id))".format( self.table_name )
这句话能说明问题吗 version
作为分区键?
另外,我的select查询显然需要很长时间,因为#行不断增加:
row_check_query = "SELECT {} FROM {} WHERE {}={} AND {}='{}' ".format( "row_hash", self.table_name, "version", self.version, "id", key )
1条答案
按热度按时间3zwjbxry1#
对,
version
是分区键。id
在您的案例中是一个集群列。您可以使用cql跟踪来分析性能问题-https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshtracing.html
根据您的数据分布情况,您可能会进入一个“宽行”场景,在一个单独的行中有许多记录
version
分区,必须读取非常大的分区可能需要时间。