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

Câu đố bế tắc:Nạn nhân không sở hữu bất kỳ tài nguyên nào, được sử dụng để giết để giải quyết bế tắc

Trong ngữ cảnh khóa, các bảng và các chỉ mục liên quan của chúng là các thực thể riêng biệt. Đôi khi, khóa chết xảy ra giữa một bảng và chỉ mục của nó, thay vì giữa hai bảng riêng biệt.

Sự cố rất có thể xảy ra khi một khóa được yêu cầu trên một chỉ mục và sau đó một khóa khác được yêu cầu trên bảng liên quan (tức là thanh) để thực hiện tra cứu dữ liệu. Trong quá trình chèn, điều này sẽ xảy ra theo thứ tự ngược lại. Đầu tiên, bảng (tức là thanh) bị khóa và cập nhật, sau đó các chỉ mục sẽ bị khóa.

select foo 
from bar 
where @someId = 0 OR SomeId = @someId

Bạn có / bạn có thể thêm một chỉ mục bao quát (để giúp chọn) có chứa cả SomeId và foo không? Bằng cách này, bạn sẽ tránh được hoàn toàn việc tra cứu và ngăn sự cố xảy ra.

Bạn có thể đăng các kế hoạch truy vấn thay vì các khung bế tắc không?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các tính năng mới trong SQL Server 2017 (Công cụ cơ sở dữ liệu)

  2. Công việc SQL Server Agent - Xuất kết quả sang Tệp được phân cách bằng tab?

  3. Cách khắc phục “Chuyển đổi không thành công khi chuyển đổi giá trị thành kiểu dữ liệu” trong SQL Server

  4. Cách khắc phục “Chỉ có thể chỉ định một biểu thức trong danh sách chọn…” trong SQL Server

  5. Lược đồ máy chủ SQL và lược đồ mặc định