锁定的基本知识
若要了解 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 中的锁定功能,您必须熟悉可以锁定的资源和可以用来锁定资源的不同模式。
锁定粒度
锁定粒度指发生锁定的级别:
- 行
- 表
- 页
- 数据库
在较小粒度(如行级)上锁定会提高并发性,但是如果锁定许多行,则必须持有更多的锁。在较大粒度(如表级)上锁定会降低并发性,因为锁定整个表会限制其他事务对该表任何部分的访问。但是,在表级锁定中,持有的锁较少。
默认情况下,SQL Server Compact Edition 对数据页使用行级锁定,对索引页使用页级锁定。
下表显示了 SQL Server Compact Edition 可以锁定的资源:
锁 | 说明 |
---|---|
RID |
行标识符。用于锁定表内的单个行。 |
PAG |
数据页或索引页。 |
TAB |
整个表,包括所有数据和索引 |
MD |
表的元数据。用于保护表架构 |
DB |
数据库 |
锁定模式
锁定模式确定并发事务可以访问数据的方式。SQL Server Compact Edition 根据必须锁定的资源和必须执行的操作来确定使用哪种锁定模式。
下表介绍了 SQL Server Compact Edition 支持的锁定模式:
锁定模式 | 说明 |
---|---|
共享 (S) |
保护资源,以便只能对其进行读取访问。当资源上存在共享 (S) 锁时,其他事务均不能修改数据。 |
排他 (X) |
指示数据修改,例如插入、更新或删除。确保不能同时对同一资源进行多个更新。 |
更新 (U) |
防止常见形式的死锁。每次只有一个事务可以获得资源上的 U 锁。如果事务修改资源,则 U 锁将转换为 X 锁。 |
架构 |
在执行依赖于表架构的操作时使用。架构锁的类型是架构修改 (Sch-M) 和架构稳定性 (Sch-S)。 |
意向 |
建立锁层次结构。最常见的意向锁类型是 IS、IU 和 IX。这些锁指示事务正在处理层次结构中较低级别的某些资源,而不是所有资源。较低级别的资源将具有 S、U 或 X 锁。 |
重要事项: |
---|
对于默认隔离级别“已提交读”,SQL Server Compact Edition 中的 SELECT 语句不需要使用 S 锁来读取数据。虽然这对于 Microsoft SQL Server 是必需的,但 SQL Server Compact Edition 不需要使用 S 锁来强制执行“提交读”。SELECT 语句需要的唯一锁是 Sch-S,它在操作执行时保护架构。因此,SELECT 语句是高度并发的。有关详细信息,请参阅事务隔离级别。 |
请参阅
概念
锁定 (SQL Server Compact Edition)
了解锁定
自定义锁定