CockroachDB SQL开发基础 ——事务隔离级别和并发控制介绍 (2)

本文深入探讨CockroachDB的SSI事务隔离级别,解释在SSI下如何避免脏读、不可重复读和幻象读,并通过示例说明在何种情况下写操作会阻塞读操作,同时对比了与其他隔离级别的区别。
摘要由CSDN通过智能技术生成

     在前一篇文章中介绍了CRDB SI事务隔离级别,在这篇文章将向大家介绍CRDB缺省的事务隔离级别SSI(可串行化快照隔离级别)。

     2. SSI隔离级别
     在CRDB中,运行在SSI隔离级别的事务具有如下行为特点:

      (1) 不会发生“脏读”、“不可重复读”和“幻象读”,也不会发生“写偏斜”异常。对于应用开发人员来说,只需要正常的使用标准的SQL语法就能够享受这种隔离级别带来的数据一致性的好处(某些NewSQL,比如PingCap的TiDB,需要使用SELECT FROM FOR UPDATE来解决写偏斜的问题)。

      (2) 在SI隔离级别下写不会阻塞读,读也不会阻塞写。但是,对于SSI隔离级别,在某些情况下写会阻塞读。与SI相同,如果两个事务运行期间对相同记录进行更新,在SSI隔离级别下,先操作的也会阻塞后操作的事务。

       对于上面的行为的体验,可以参照上一篇介绍SI隔离级别的文章。在下面,结合例子说明SSI隔离级别下,在什么情况下写会阻塞读。

       示例1:

      事务1                                                     事务2

      begin;                                                 

         select * from account;                          begin;

         where id  = 1;   --余额值为100

         update accou

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值