SQL Server锁的种类与区分

数据库 SQL Server
以下的文章主要描述的是SQL Server锁的种类还有对SQL Server数据库锁的类别的区分的两种实际操作方案的详细介绍。

以下的文章主要描述的是SQL Server锁的种类。以及对SQL Server数据库锁的类别的区分的两种方案的描述,以下就是SQL Server锁的种类与区分锁的方案具体方案的描述,希望在你今后的学习中会有所帮助。

锁的类别有两种分法:

从数据库系统的角度来看:分为独占锁(即排它锁),共享 SQL Server锁和更新锁

MS-SQL Server 使用以下资源锁模式。

锁模式 描述

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

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

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

意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。

架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。

大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。

共享锁

共享 (S) 锁允许并发事务读取 (SELECT) 一个资源。资源上存在共享 (S) 锁时,任何其它事务都不能修改数据。一旦已经读取数据,便立即释放资源上的共享 (S) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用 SQL Server锁定提示保留共享 (S) 锁。

更新锁

更新 (U) 锁可以防止通常形式的死锁。一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (S) 锁,然后修改行,此操作要求锁转换为排它 (X) 锁。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排它 (X) 锁。共享模式到排它锁的转换必须等待一段时间,因为一个事务的排它锁与其它事务的共享模式锁不兼容;发生锁等待。第二个事务试图获取排它 (X)  SQL Server锁以进行更新。由于两个事务都要转换为排它 (X) 锁,并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。

若要避免这种潜在的死锁问题,请使用更新 (U) 锁。一次只有一个事务可以获得资源的更新 (U) 锁。如果事务修改资源,则更新 (U) 锁转换为排它 (X) 锁。否则,锁转换为共享锁。

排它锁

排它 (X) 锁可以防止并发事务对资源进行访问。其它事务不能读取或修改排它 (X)  SQL Server锁锁定的数据。

责任编辑:佚名 来源: 网络整理
相关推荐

2010-07-22 17:47:32

SQL Server数

2010-07-23 18:33:57

SQL Server游

2010-07-26 15:17:46

SQL Server锁

2010-06-29 17:17:44

SQL Server锁

2010-07-20 08:35:54

SQL Server锁

2010-07-19 18:04:23

SQL Server锁

2010-04-16 14:39:54

ORACLE锁

2010-11-09 13:47:17

SQL Server资

2010-09-08 14:49:12

SQL Server数据库

2010-07-26 16:11:45

Microsoft S

2011-09-08 16:30:59

SQL Server查询

2010-07-20 08:48:14

SQL Server

2010-06-29 17:10:22

SQL Server数

2010-07-26 17:20:53

SQL Server

2010-07-23 15:33:05

SQL Server锁

2010-07-19 14:24:15

SQL Server盘

2023-02-02 11:53:44

nolock关键词SQLserver

2010-07-07 13:58:25

SQL Server死

2010-07-23 10:26:05

SQL Server

2010-07-22 16:02:29

点赞
收藏

51CTO技术栈公众号