最近,我们在cassandra中将二级索引移到了物化视图,这是因为sasi索引由于频繁的更新而崩溃,而且sasi稀疏索引的每个索引最多有五个条目。之前,我们的表有一个特定的物化视图,即基表:
CREATE TABLE IF NOT EXISTS chats (
user_id bigint,
peer_id bigint,
msg_id text,
text text,
timestamp timestamp,
updated_at timestamp,
PRIMARY KEY (user_id, peer_id, msg_id)
) WITH CLUSTERING ORDER BY (msg_id ASC)
和物化视图:
CREATE MATERIALIZED VIEW IF NOT EXISTS chats_by_updated AS
SELECT * FROM chats
WHERE user_id IS NOT NULL AND updated_at IS NOT NULL
PRIMARY KEY (user_id, updated_at, peer_id, msg_id)
WITH CLUSTERING ORDER BY (updated_at ASC, peer_id ASC, msg_id ASC)
我们决定添加另一个物化视图
CREATE MATERIALIZED VIEW IF NOT EXISTS chats_by_updated AS
SELECT * FROM chats
WHERE user_id IS NOT NULL AND updated_at IS NOT NULL
PRIMARY KEY (user_id, peer_id, updated_at, msg_id)
WITH CLUSTERING ORDER BY (updated_at ASC, peer_id ASC, msg_id ASC)
在其中一个节点开始出现随机行为后的一天内,这种变化一直顺利进行。我说的是16核机器中平均负载为42,iops为3k。所有其他节点都在~10 wa stat下正常工作,只有一个节点在顶部约为~70 wa。
查看aws-ebs Jmeter 板,我看到ebs队列长度约为30,读写延迟约为15毫秒,对于这个节点来说,这是巨大的。模式是读写相等的部分。写操作是一个恒定的行流,大约有15列。
这很混乱,因为只有一个select被发布给多个mv。读取吞吐量不应该增加。我不能够理解这是否是由于增加了一个mv或其他一些问题的发生。我错过了什么?
暂无答案!
目前还没有任何答案,快来回答吧!