PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 数据库 > SQL Server教程 > 正文

    SQL Server 的事务和锁(一)

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:这一篇是开篇,主要说明的是 SQL Server 的四种(其实还有别的)经典的事务隔离级别,以及在不同的隔离级别下锁的使用手段,以及所带来...
    这一篇是开篇,主要说明的是 SQL Server 的四种(其实还有别的)经典的事务隔离级别,以及在不同的隔离级别下锁的使用手段,以及所带来的不同的数据一致性。
    SQL Server 中锁的种类(Schema操作就暂时不涉及了)

     

    锁类型 描述
    (Shared Lock) 用于只读操作数据锁定
    (Update Lock) 用于数据的更新,在数据真正的需要更新的时候会申请升级为X锁。
    X(Exclusive Lock) 独占锁,用于数据的更改。
    Key-Range Lock(稍后讨论) 仅仅在 Serializable 隔离级别保护数据,以避免任何有可能使得本事务第二次读取信息产生错误的数据插入操作

     

    各个事务隔离级别下锁的使用
    SQL Server 中有四种事务隔离级别,具体的大家去参建 MSDN。下面列出在不同的事务隔离级别下这些锁是如何使用的:

     

    隔离级别 读数据锁状态 写数据锁状态 锁持有时间
    Read Uncommitted 不获得任何锁 不获得任何锁  
    Read Committed 数据获得S锁 对于 INSERT、DELETE、UPDATE的执行,获得X锁;对于UPDATE的标记,获得U锁; 读完即释放,并不持有至事务结束。
    Repeatable Read 数据获得S锁 对于 INSERT、DELETE、UPDATE的执行,获得X锁;对于UPDATE的标记,获得U锁; 持有至事务结束
    Serializable 数据获得S锁,同时获得Key-Range锁。 对于 INSERT、DELETE、UPDATE的执行,获得X锁;对于UPDATE的标记,获得U锁,同时获得Key-Range锁。 持有至事务结束
     

     

      脏读 更新丢失 不可重复读 幻读
    Read Uncommitted 可能 可能 可能 可能
    Read Committed 不可能 可能 可能 可能
    Repeatable Read 不可能 不可能 不可能 可能
    Serializable 不可能 不可能 不可能 不可能

    这一篇到此为止,下一篇详细介绍 Key-Range Lock 并分析开篇提到的死锁问题。

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-36-605-1.html
    相关热词搜索: SQL Server