Cassandra行级隔离

时间:2015-06-04 12:25:21

标签: cassandra transaction-isolation

我有一个用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;

这两个语句共享相同的分区键。 (key = 1),但不同的聚类列值。这两个陈述会被隔离吗?

1 个答案:

答案 0 :(得分:5)

必须隔离这些查询,如C * docs herehere中所述:

  

在Cassandra的早期版本中,当一个用户更新行而另一个用户正在读取同一行时,可以看到连续的部分更新。例如,如果一个用户正在编写一个包含两千列的行,则另一个用户可能会读取同一行并查看一些列,但如果写入仍在进行中,则不能全部读取所有列。

     

完全行级别隔离,这意味着对行的写入与执行写入的客户端隔离,并且在完成之前对任何其他用户都不可见。