Nâng cao, mặc dù
Khóa leo thang dưới mức cách ly nối tiếp có thể xảy ra giống như với các mức cách ly khác.
- Chỉ số chính xác có thể giúp tránh leo thang khóa đến một điểm
- Khóa nhiều chỉ số sẽ làm tăng khả năng leo thang khóa; số lượng được tích lũy trên các đối tượng cho một câu lệnh
Một số ví dụ nhanh sử dụng một bảng duy nhất với một chỉ mục duy nhất. Id là khóa chính và chỉ mục được nhóm trên bảng.
Một hàng
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
UPDATE c
SET c.Score = 2147483647
FROM dbo.Comments AS c
WHERE c.Id = 138; --One value
ROLLBACK
Đối với một giá trị Id duy nhất, khóa là tối thiểu.
+--------------+---------------+---------------+-------------+
| request_mode | locked_object | resource_type | total_locks |
+--------------+---------------+---------------+-------------+
| RangeX-X | Comments | KEY | 1 |
| IX | Comments | OBJECT | 1 |
| IX | Comments | PAGE | 1 |
+--------------+---------------+---------------+-------------+
Nhiều hàng
Nhưng khóa sẽ tăng nếu chúng ta bắt đầu làm việc trong phạm vi:
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; -- Small range
ROLLBACK
Bây giờ chúng tôi có nhiều khóa độc quyền hơn trên nhiều khóa:
+--------------+---------------+---------------+-------------+
| request_mode | locked_object | resource_type | total_locks |
+--------------+---------------+---------------+-------------+
| RangeX-X | Comments | KEY | 2429 |
| IX | Comments | OBJECT | 1 |
| IX | Comments | PAGE | 97 |
+--------------+---------------+---------------+-------------+
Cách nhiều hàng
Điều này sẽ tiếp tục cho đến khi chúng tôi đạt đến điểm bùng phát:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
UPDATE c
SET c.Score = 2147483647
FROM dbo.Comments AS c
WHERE c.Id BETWEEN 1 AND 11655; --Larger range
ROLLBACK
Khóa leo thang được thử và thành công:
+--------------+---------------+---------------+-------------+
| request_mode | locked_object | resource_type | total_locks |
+--------------+---------------+---------------+-------------+
| X | Comments | OBJECT | 1 |
+--------------+---------------+---------------+-------------+
Chú ý
Điều quan trọng là phải tách hai khái niệm ở đây: mức cô lập sẽ được tuần tự hóa cho dù loại khóa nào được thực hiện. Truy vấn chọn mức cô lập và công cụ lưu trữ chọn các khóa. Nối tiếp sẽ không luôn dẫn đến khóa phạm vi - công cụ lưu trữ có thể chọn bất kỳ loại khóa nào vẫn tôn vinh mức cô lập.