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

Zero SQL bế tắc theo thiết kế - bất kỳ mẫu mã nào?

Viết mã chống deadlock thực sự rất khó. Ngay cả khi bạn truy cập vào các bảng theo cùng một thứ tự, bạn vẫn có thể gặp các bế tắc [1]. Tôi đã viết một bài đăng trên blog của mình trình bày chi tiết thông qua một số cách tiếp cận sẽ giúp bạn tránh và giải quyết các tình huống bế tắc.

Nếu bạn muốn đảm bảo hai câu lệnh / giao dịch sẽ không bao giờ bị deadlock, bạn có thể đạt được điều đó bằng cách quan sát các khóa mà mỗi câu lệnh sử dụng bằng cách sử dụng sp_lock hệ thống lưu trữ thủ tục. Để làm được điều này, bạn phải rất nhanh hoặc sử dụng giao dịch mở với gợi ý khóa giữ.

Ghi chú:

  1. Bất kỳ câu lệnh SELECT nào cần nhiều hơn một khóa cùng một lúc có thể gây bế tắc đối với một giao dịch được thiết kế thông minh, lấy các khóa theo thứ tự ngược lại.


  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:mệnh đề in trong thủ tục được lưu trữ:cách chuyển giá trị

  2. Bộ xử lý Intel được đề xuất cho khối lượng công việc SQL Server 2014

  3. Thiết kế cơ sở dữ liệu cho cài đặt người dùng

  4. @@ ROWCOUNT - Nhận số lượng hàng bị ảnh hưởng bởi câu lệnh cuối cùng trong SQL Server

  5. Tìm hiểu xem một đối tượng có phải là một bảng do người dùng xác định trong SQL Server với OBJECTPROPERTY ()