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

Tránh bế tắc bằng cách sử dụng gợi ý NOLOCK

Dự kiến ​​thỉnh thoảng có những bế tắc trên RDBMS khóa như SQL Server / Sybase.

Bạn có thể viết mã trên máy khách để thử lại theo khuyến nghị MSDN "Xử lý bế tắc" Về cơ bản, hãy kiểm tra SQLException và có thể nửa giây sau, thử lại.

Nếu không, bạn nên xem lại mã của mình để tất cả quyền truy cập vào các bảng theo cùng một thứ tự. Hoặc bạn có thể sử dụng SET DEADLOCK_PRIORITY để kiểm soát ai trở thành nạn nhân.

Trên MSDN dành cho SQL Server có "Giảm thiểu các bế tắc" bắt đầu

Điều này cũng đề cập đến "Sử dụng mức cô lập thấp hơn" mà tôi không thích (giống như nhiều kiểu SQL ở đây trên SO) và là câu hỏi của bạn. Đừng làm điều đó là câu trả lời ... :-)

Lưu ý: MVCC loại RDBMS (Oracle, Postgres) không có vấn đề này. Xem http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversaction nhưng MVCC có các vấn đề khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn nhiều hàng giá trị mặc định vào bảng

  2. Điều gì sẽ xảy ra khi tràn dấu thời gian (đảo ngược hàng)?

  3. SQL Server - Cấp quyền đăng nhập cho quyền truy cập đọc vào tất cả cơ sở dữ liệu hiện có và trong tương lai

  4. SSIS ForEach loop - thay đổi kết nối bên trong vòng lặp for

  5. Hiển thị dữ liệu từ cơ sở dữ liệu vào DropDownList trong asp.net MVC3