例如 表为 create table user_msg (
user_id text,
msg_id bigint,
msg text,
PRIMARY KEY (user_id , msg_id)
);
假定每个分区键下有10w~100w条记录,数据分散在很多个sstables下。
当以排序键顺序建表时,查询语句为: select msg_id from user_msg where user_id='100000' order by msg_id desc limit 1;
当以排序键逆序建表时,查询语句为:select msg_id from user_msg where user_id='100000' limit 1;
这两种方式,逆序建表查询性能更优吗?
通过阅读1官方Cassandra文档的说明,我的理解是在没有指定排序键范围时,需要读每个sstable中的最大排序键,然后这些排序键值进行比较,最终读到最大排序键,则在这种方式下需要读大量sstables。如果这种查询的方式的请求量很大,读多个userid下的msgid, 这种使用场景是否会导致Cassandra 频繁gc, 最终导致Cassandra 节点宕机?