卡桑德拉行级隔离(Cassandra row level isolation)

2019-10-23 06:51发布

我在CQL创建的表:

create table isolation_demo(key text,column1 text,column2 text,column3 text ,primary key(key,column1,column2));

我有一个批处理2语句。

update isolation_demo set column3 ='ABC' where key =1 and column1 =1 and column2=1;
delete from isolation_demo where key =1 and column1 =2 and column2=2;

这里的两个语句共享同一个分区键。 (标号= 1),但不同的聚类列值。 将这些2个语句是孤立的?

Answer 1:

这些查询必须隔离,如C *文档提到这里 ,并在这里 :

在卡桑德拉的早期版本中,可以看到在一排的部分更新,当一个用户在更新该行,而另一个用户正在读同一行。 例如,如果一个用户在写一排有两千列,其他用户可能读取同一行,看到一些列的,但不是所有的人如果写仍在进行中。

全行级隔离到位,这意味着写入到行被隔离到执行该写入的客户端,并且不给任何其他用户可见,直到他们完成。



文章来源: Cassandra row level isolation