我正在与 cassandra 压力作斗争。我正在调整我的 C* 集群,该集群为执行更新和删除的应用程序提供服务。
我没有找到关于 cassandra-stress 的大量文档来举例说明用法,所以花了很长时间才让它与插入和读取一起工作。由于我的应用程序正在执行更新和删除,因此我需要对该用法进行压力测试。
我有一张如下表:
table: eventsrawtest
table_definition: |
CREATE TABLE stresstest.eventsrawtest (
my_id text,
my_info text,
my_date text,
my_time timestamp,
my_stats bigint,
PRIMARY KEY ((my_id, my_info, my_date), my_time)
) WITH CLUSTERING ORDER BY (node_time DESC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE'
我知道这很多,但我正在尝试为有问题的应用程序复制 C* 中使用的主体 CF。
这里 my_time 是一个聚类键。
我在 yaml 中的 cassandra-stress 查询如下:
queries:
simple1:
cql: select * from eventsrawtest where my_id = ? and my_info = ? and my_date = ?
fields: samerow # pick selection values from same row in partition
range1:
cql: select * from eventsrawtest where my_id = ? and my_info = ? and my_date = ? and my_time >= ? and my_time <= ?
fields: multirow # pick selection values from same row in partition
update1:
cql: update eventsrawtest set bytes_received = ? where my_id = ? and my_info = ? and my_date = ? and my_time = ?
fields: samerow
update2:
cql: update eventsrawtest set bytes_received = ? where my_id = ? and my_info = ? and my_date = ? and my_time >= ? and my_time <= ?
fields: multirow
当我使用这些查询运行 cassandra-stress
cassandra-stress user profile=./my-stress-test.yaml n=1000000 "ops(simple1=1,range1=1,update1=1,update2=1)" no-warmup cl=QUORUM -node 1.db,2.db,3.db -mode native cql3
我收到 update1 和 update2 的此错误
com.datastax.driver.core.exceptions.InvalidQueryException: Slice restrictions are not supported on the clustering columns in UPDATE statements
我是 C* 的新手,所以这就是我不真正理解错误的原因。我还没有找到一个清楚的解释为什么我会收到这个错误,更不用说它的补救措施了。我需要在我的更新查询中使用 my_time 集群键,但是对 my_time 的有效查询不适用于 cassandra-stress。
任何指导、帮助、指点,都将非常感激。