zoukankan      html  css  js  c++  java
  • SqlServer中的更新锁(UPDLOCK和READPAST)

          UPDLOCK和READPAST,通过UPDLOCK和READPAST的结合我们能够解决许多问题,比如我当前项目中对于更新预约人数,则用到了UPDLOCK和READPAST,因为考虑到并发如果固定预约人数为100,那么当出现并发时将有可能导致预约超出的情况,利用UPDLOCK则可以解决其他进程过来时对其进行修改的情况,同时结合READPAST解决脏读,同时不会阻塞,当有请求过来时我们直接利用表变量对预约人数进行更新,若更新失败我们再进行回滚,算是一个解决方案。同时利用UPDLOCK和READPAST还可以解决其他问题,比如,当有多个并发时我们要根据筛选条件获取第一值,也就是说第二个请求过来时获取到的值是下一个,那么这样的问题该如何处理呢,若我们只是简单进行处理,那么第二个请求同时过来时可能也会读取到之前读取的那个值,基于此场景,我们可以利用UPDLOCK和READPAST来解决。我们看如下代码就可以理解。

           UPDLOCK  读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。

           READPAST     指定数据库引擎不读取由其他事务锁定的行。 如果指定了 READPAST,将跳过行级锁。

  • 相关阅读:
    关于 Lazy<T>
    silverlight 模仿淘宝预览图片
    自动安装silverlight,类似flash自动安装
    来说说mask吧
    笔试题n! 末尾0的个数
    VueCLI和脚手架(原创)
    REST构架风格介绍之一:状态表述转移(ZZ)
    VSS2005的配置(转载)
    ArcGIS9.2安装与.NET简单使用(zz 简单且有用)
    ASP.NET内置对象(7个)
  • 原文地址:https://www.cnblogs.com/zping/p/11464891.html
Copyright © 2011-2022 走看看