• 数据库锁


    (1)概念:

       数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

    加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

    (2)锁的分类:

    共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。 

    排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。 

    更新(U)锁:更新锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先获得一个共享锁,读取数据,然后将共享锁升级为排它锁,然后再执行修改操作。这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些事务都要将共享锁升级为排它锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。如果一个数据在修改前直接申请更新锁,在数据修改的时候再升级为排它锁,就可以避免死锁。

    (3)锁的粒度:

    在sql server2000中锁是具有粒度的,即可以对不同的资源加锁。锁定在较小的粒度的资源(例如行)上可以增加系统的并发量但需要较大的系统开销,从而也会影响系统的性能,因为锁定的粒度较小则操作可能产生的锁的数量会增加;锁定在较大的粒度(例如表)就并发而言是相当昂贵的,因为锁定整个表限制了其它事务对表中任意部分进行访问,但要求的开销较低,因为需要维护的锁较少,所以在这里是一种互相制约的关系。

     Sql server2000中锁定的粒度包括 行、页、扩展盘区、表、库等资源。

    本文摘抄自网络。

    原文标题:数据库-锁(概念、分类、粒度)

    原文地址:http://blog.csdn.net/zdplife/article/details/48035837

    锁的分类

    1. 从数据库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁
    MS-SQL Server 使用以下资源锁模式。
    锁模式 描述
    共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
    更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。
    排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
    意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。
    架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。
    大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。
    2. 从程序员的角度看:分为乐观锁和悲观锁。
    乐观锁:完全依靠数据库来管理锁的工作。
    悲观锁:程序员自己管理数据或对象上的锁处理。
     
    MS-SQLSERVER 使用锁在多个同时在数据库内执行修改的用户间实现悲观并发控制。
     
    三 锁的粒度
    锁粒度是被封锁目标的大小,封锁粒度小则并发性高,但开销大,封锁粒度大则并发性低但开销小
     
    SQL Server支持的锁粒度可以分为为行、页、键、键范围、索引、表或数据库获取锁
     
    资源 描述
    RID 行标识符。用于单独锁定表中的一行。
    键 索引中的行锁。用于保护可串行事务中的键范围。
    页 8 千字节 (KB) 的数据页或索引页。
    扩展盘区 相邻的八个数据页或索引页构成的一组。
    表 包括所有数据和索引在内的整个表。
    DB 数据库。
     
     
  • 相关阅读:
    第二高的薪水
    leecode 删除排序数组中的重复项
    leecode 17. 电话号码的字母组合
    dubbo 限流之TpsLimitFilter
    G1总结
    leecode 3. 无重复字符的最长子串
    mysql是如何解决脏读、不可重复读、幻读?
    归并排序
    PostgreSQL管理数据库安全
    Oracle Database 19c 技术架构(三)
  • 原文地址:https://www.cnblogs.com/Tpf386/p/6703612.html
Copyright © 2020-2023  润新知