小编msl*_*lot的帖子

SQL Server 的可序列化隔离级别是否锁定整个表

我和我的一位同事讨论了使用可序列化隔离级别的含义。他说它锁定了整个表,但我不同意告诉他它可能可以但它尝试应用范围锁并且它不应用真正的序列化,如此处所述:可序列化隔离级别

我在文档中找不到“锁定整个表”的任何内容:SET TRANSACTION ISOLATION LEVEL

该文档说明了一系列关于范围锁的内容,因此理论上您可以通过简单地拥有一个范围锁来锁定整个表,该范围锁可以锁定表中可能值的整个范围,但它不会锁定表。

我在这里完全错了吗?它实际上是否锁定了整个表(或多个表)?

sql-server isolation-level serialization

11
推荐指数
2
解决办法
2028
查看次数

什么是 SQL Server 中的意图锁

我有这个查询

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN

UPDATE c
SET c.Score = 2147483647 
FROM dbo.Comments AS c
WHERE c.Id BETWEEN 1 AND 5000;
Run Code Online (Sandbox Code Playgroud)

哪个有这些统计数据

+--------------+---------------+---------------+-------------+
| request_mode | locked_object | resource_type | total_locks |
+--------------+---------------+---------------+-------------+
| RangeX-X     | Comments      | KEY           |        2429 |
| IX           | Comments      | OBJECT        |           1 |
| IX           | Comments      | PAGE          |          97 |
+--------------+---------------+---------------+-------------+
Run Code Online (Sandbox Code Playgroud)

我想知道 IX,它是一个意图锁。这是什么意思,为什么桌子上有一个它自己?据我了解,它不是真正的锁,而是 SQL Server 使用(或由事务设置?)来指示可能发生锁的更多东西。

以上是对的吗?

sql-server locking serialization

4
推荐指数
1
解决办法
962
查看次数