Read Committed与Read committed snapshot的区别以及Read Committed Snapshot与Sanpshot的区别

Read Committed是读已经提交的事务之后的数据,如果一个事务没有提交,则当前事务将被阻塞。例如

Connection 1:


BEGIN TRAN;

  UPDATE Production.Products
    SET unitprice = 20
  WHERE productid = 2;

  SELECT productid, unitprice
  FROM Production.Products
  WHERE productid = 2;

Connection 2:


  SELECT productid, unitprice
  FROM Production.Products
  WHERE productid = 2;

Connection 2的操作将被阻塞。


如果Connection 2采用 Read committed snapshot将不会被阻塞,而是通过row versioning获得旧的数据。

还用此例接着阐述Read Committed snapshot与Sanpshot的区别。

1.提交Connnection 1的操作。

2.再次运行Connection 2的操作,由于Read committed snapshot是获取此语句运行时最后一个提交的row version, 所以将获得更新之后的结果。

3.如果Connection 3的isolation level是Sanpshot, 由于它是获取事务运行时最后一个提交的row version,所以仍将获得旧的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值