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

Bế tắc trong cơ sở dữ liệu là gì?

Nói chung, deadlock có nghĩa là hai hoặc nhiều thực thể đang chặn một số nguồn và không ai trong số chúng có thể hoàn thành vì chúng đang chặn các nguồn theo cách tuần hoàn.

Một ví dụ:Giả sử tôi có bảng A và bảng B, tôi cần thực hiện một số cập nhật trong A và sau đó là B và tôi quyết định khóa cả hai chúng tại thời điểm sử dụng (đây thực sự là hành vi ngu ngốc, nhưng nó phục vụ mục đích của nó ngay bây giờ. ). Cùng lúc đó, người khác làm điều tương tự theo thứ tự ngược lại - khóa B trước, sau đó khóa A.

Theo thứ tự thời gian, điều này xảy ra:

proc1:Khóa A

proc2:Khóa B

proc1:Khóa B - bắt đầu đợi cho đến khi proc2 phát hành B

proc2:Khóa A - bắt đầu đợi cho đến khi proc1 phát hành A

Không ai trong số họ sẽ bao giờ hoàn thành. Thật là bế tắc. Trong thực tế, điều này thường dẫn đến lỗi thời gian chờ vì không mong muốn có bất kỳ truy vấn nào bị treo vĩnh viễn và hệ thống cơ bản (ví dụ:cơ sở dữ liệu) sẽ giết các truy vấn không kết thúc kịp thời.

Một ví dụ thực tế về tình trạng bế tắc là khi bạn khóa chìa khóa nhà trong ô tô và chìa khóa ô tô trong nhà.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt về hiệu suất chính giữa kiểu dữ liệu SQL Server varchar và nvarchar là gì?

  2. Có thể khôi phục bản sao lưu Sql Server 2008 trong sql server 2005 không

  3. Tách các cặp giá trị và tạo bảng bằng UDF

  4. sql - nhận số lượng nhân viên ở mỗi cấp ở một định dạng cụ thể

  5. Mệnh đề WHERE trên SQL Server Kiểu dữ liệu văn bản