zoukankan      html  css  js  c++  java
  • sqlserver中的锁-01

    概念:

    共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。

    更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。

    排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。

     

     

    增删改查使用:

    SELECT 语句默认会产生共享锁,该锁查询完就释放,不需要等待所在的事务提交。

    UPDATE 语句先使用更新锁锁定数据,然后升级成独占锁

    INSERT,UPDATE 语句使用独占锁

     

     

    关于update锁:

    这里这种介绍一下,为什么需要更新锁?

    首先updtae语句,对于符合条件的数据添加U锁(注意U锁和U锁不兼容),真正更新数据时,把U锁升级成X锁,

    即update过程,是U锁升级X锁,修改数据

    例如,update table1 set type='1' where type='b', 实际过程是首先对扫描的数据添加U锁,对于不符合条件的,释放U锁;对于符合条件的,把U锁升级成X锁,修改数据。

    由于U所的互斥想,不可能对同一数据添加两个U锁。

     

    若是没有U锁,则变成update过程,是S锁升级X锁,修改数据,

    那么的话,在执行Update时,有可能两个事务同时用S锁,锁住了同一个数据;然后双方都是从S锁升级成X锁,都在等待对方释放S锁,这样就产生了死锁。

    U锁的引入,可以有效的解决此类问题。

     

     

     

     

     

     

  • 相关阅读:
    SQL2014还原到2008
    SQL SERVER2014 安装 Error code 0x858C001B.
    c++builder XE7 C++11 C++0x 新语法
    c++Builder XE6 MD5 加密算法 BASE64 URL 编码
    手机新功能
    xe fmx 怎么改变button颜色
    XE6 任务栏 控件
    js里面return 和 return false的区别
    web.xml的contextConfigLocation作用及自动加载applicationContext.xml
    mybatis-config.xml配置
  • 原文地址:https://www.cnblogs.com/shizheyangde/p/7400154.html
Copyright © 2011-2022 走看看