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锁的引入,可以有效的解决此类问题。

     

     

     

     

     

     

  • 相关阅读:
    php mysql 查询
    正则表达式 常用匹配模式
    正则 去除html标签
    PHP 操作MySQL
    MySQL 的中文乱码问题终结
    [转]BP人工神经网络的介绍与实现
    [转]BP人工神经网络的C++实现
    [转]高效BP(反向传播算法)
    [转]反向传播算法BP (弄懂为什么是反向而不是正向)
    [转]BP神经网络梯度下降算法
  • 原文地址:https://www.cnblogs.com/shizheyangde/p/7400154.html
Copyright © 2011-2022 走看看