2015-06-04 47 views
1

我在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),但是不同的聚类列值。这两个陈述会被隔离吗?

回答

5

这些查询必须被分离,如在C *文档herehere提到:

在卡桑德拉的早期版本中,它是可以看到一列的部分更新,当一个用户是更新而行另一位用户正在阅读同一行。例如,如果一个用户正在编写一个包含两千列的行,另一个用户可能会读取同一行并查看一些列,但如果写入仍在进行中,则不是全部。

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