Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server, XLOCK gây hiểu lầm &tối ưu hóa

Tính độc quyền của X khóa so với U ổ khóa

Trong ma trận khả năng tương thích của khóa bên dưới, có thể thấy rằng X khóa chỉ tương thích với sự ổn định của lược đồ và các loại khóa Chèn Phạm vi-Null. U tương thích với các loại khóa chia sẻ bổ sung sau đây S / IS / RS-S / RI-S / RX-S

khóa ma trận tương thích http://i.msdn.microsoft.com/ms186396.LockConflictTable(en-us,SQL.105).gif

Mức độ chi tiết của X ổ khóa

Chúng được thực hiện tốt ở tất cả các cấp. Dấu vết tập lệnh và đoạn mã bên dưới chứng tỏ chúng đã được lấy ra thành công ở cấp hàng.

CREATE TABLE test_table (id int identity(1,1) primary key, col char(40))

INSERT INTO test_table
SELECT NEWID() FROM sys.objects

select * from test_table with (rowlock,XLOCK) where id=10

Nhưng vẫn có thể đọc các hàng!

Nó chỉ ra rằng tại read committed mức cô lập Máy chủ SQL sẽ không phải lúc nào cũng lấy ra S khóa, nó sẽ bỏ qua bước này nếu không có nguy cơ đọc dữ liệu không được cam kết mà không có chúng. Điều này có nghĩa là không có gì đảm bảo sẽ xảy ra xung đột khóa.

Tuy nhiên, nếu lựa chọn ban đầu là with (paglock,XLOCK) thì cái này sẽ dừng giao dịch đọc dưới dạng X khóa trên trang sẽ chặn IS khóa trang mà người đọc sẽ luôn cần đến. Điều này tất nhiên sẽ có tác động đến tính đồng thời.

Những lưu ý khác

Ngay cả khi bạn khóa hàng / trang, điều này không có nghĩa là bạn chặn tất cả các quyền truy cập vào hàng đó trong bảng. Việc khóa một hàng trong chỉ mục được phân nhóm sẽ không ngăn các truy vấn đọc dữ liệu từ hàng tương ứng trong một chỉ mục không được phân nhóm bao trùm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Tạo cơ sở dữ liệu

  2. Lỗi máy chủ SQL:Dữ liệu chuỗi hoặc nhị phân sẽ bị cắt bớt

  3. Thay đổi thông báo với Sql Server 2008

  4. Ý nghĩa của SELECT ... FOR XML PATH (''), 1,1) là gì?

  5. Sử dụng DBCC CLONEDATABASE để tạo bản sao chỉ lược đồ và thống kê của cơ sở dữ liệu người dùng trong SQL Server 2014 SP2