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

Khóa leo thang - Điều gì đang xảy ra ở đây?

" Khóa nâng cấp "là cách SQL xử lý khóa đối với các bản cập nhật lớn. Khi SQL sẽ thay đổi nhiều hàng, thì công cụ cơ sở dữ liệu sẽ hiệu quả hơn khi lấy ít khóa hơn, lớn hơn (ví dụ:toàn bộ bảng) thay vì khóa nhiều thứ nhỏ hơn (ví dụ:khóa hàng) .

Nhưng điều này có thể gây ra vấn đề khi bạn có một bảng lớn, vì việc khóa toàn bộ bảng có thể khóa các truy vấn khác trong một thời gian dài. Đó là sự cân bằng:nhiều khóa chi tiết nhỏ chậm hơn ít (hoặc một) khóa chi tiết thô và việc có nhiều truy vấn khóa các phần khác nhau của bảng sẽ tạo ra khả năng xảy ra bế tắc nếu một quy trình đang chờ một quy trình khác.

Có một tùy chọn cấp bảng, LOCK_ESCALATION , mới trong SQL 2008, cho phép kiểm soát việc leo thang khóa. Mặc định, "TABLE" cho phép các khóa chuyển sang cấp bảng. DISABLE ngăn chặn khóa leo thang cho toàn bộ bảng trong hầu hết các trường hợp. AUTO cho phép khóa bảng ngoại trừ trường hợp bảng được phân vùng, trong trường hợp đó, khóa chỉ được thực hiện ở cấp độ phân vùng. Xem bài đăng trên blog này để biết thêm thông tin.

Tôi nghi ngờ rằng IDE thêm cài đặt này khi tạo lại bảng vì TABLE là mặc định trong SQL 2008. Lưu ý rằng LOCK_ESCALATION không được hỗ trợ trong SQL 2005, vì vậy bạn sẽ cần phải loại bỏ nó nếu cố gắng chạy tập lệnh trên Năm 2005 ví dụ. Ngoài ra, vì TABLE là mặc định, bạn có thể xóa dòng đó một cách an toàn khi chạy lại tập lệnh của mình.

Cũng lưu ý rằng, trong SQL 2005 trước khi cài đặt này xuất hiện, tất cả các khóa có thể chuyển sang cấp bảng - nói cách khác, "TABLE" là cài đặt duy nhất trên SQL 2005.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Luồng có điều kiện của máy chủ SQL

  2. Cách thay đổi nhiều cột cùng một lúc trong SQL Server

  3. Sắp xếp tự nhiên (chữ-số của con người) trong Microsoft SQL 2005

  4. Nếu Bản ghi Tồn tại, Cập nhật Phụ trang Khác

  5. Tạo kế hoạch bảo trì trong SQL Server