我知道使用物化视图时会增加10%,但我想知道(并且还没有找到任何关于它的线索)如果在执行时会对表删除优化产生影响基于主键的大删除。
以下是一个案例:
TABLE a_simple_table (
year int,
fulldate date,
ref1 text,
ref2 text,
data blob,
PRIMARY KEY ((year), fulldate, ref1, ref2)
);
MATERIALIZED VIEW demo.a_simple_table_view
AS SELECT year, fulldate, ref1, ref2, data
FROM demo.a_simple_table
WHERE ref1 IS NOT NULL AND year IS NOT NULL AND fulldate IS NOT NULL AND ref2 IS NOT NULL
PRIMARY KEY ((ref1), year, fulldate, ref2)
WITH CLUSTERING ORDER BY (year DESC, fulldate DESC, ref2 ASC);
根据我的理解以及我被告知的内容,当我们执行以下操作时:
DELETE from a_simple_table WHERE year = 2017;
Cassandra只标记一个墓碑,如果主键值2017下的表格中有100行,我们就不会删除100个。
但是,由于物化视图必须找到要删除的每一行到他自己的表中,删除成本会变成什么?
答案 0 :(得分:1)
删除操作与插入没有什么不同: http://www.doanduyhai.com/blog/?p=1930
来自https://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views
当发生删除时,物化视图将查询基表中的所有已删除值,并为每个物化视图行生成逻辑删除,因为视图中需要逻辑删除的值不包含在基础中桌子的墓碑......
基本上"击中"就像你试图在基表行中插入所有值一样。由于物化视图中墓碑数量的增加,阅读将受到重创。