Mục lục:

Nguyên nhân nào gây ra bế tắc cơ sở dữ liệu?
Nguyên nhân nào gây ra bế tắc cơ sở dữ liệu?

Video: Nguyên nhân nào gây ra bế tắc cơ sở dữ liệu?

Video: Nguyên nhân nào gây ra bế tắc cơ sở dữ liệu?
Video: Khi Cuộc Sống Quá Mệt Mỏi Và Vô Định , Phải làm sao? - Tri kỷ cảm xúc Web5ngay 2024, Tháng mười một
Anonim

MỘT bế tắc xảy ra khi hai (hoặc nhiều) giao dịch chặn nhau bằng cách giữ khóa các tài nguyên mà mỗi giao dịch cũng cần. Ví dụ: Giao dịch 1 giữ một khóa trên Bảng A. Hầu hết mọi người sẽ viết rằng bế tắc không thể tránh khỏi trong một nhiều người dùng cơ sở dữ liệu.

Ở đây, deadlocks trong cơ sở dữ liệu là gì?

Bế tắc . Trong một cơ sở dữ liệu , Một bế tắc là một tình huống trong đó hai hoặc nhiều giao dịch đang chờ đợi nhau để từ bỏ khóa. Ví dụ: Giao dịch A có thể giữ một khóa trên một số hàng trong bảng Tài khoản và cần cập nhật một số hàng trong bảng Đơn hàng để hoàn tất.

Cũng cần biết, một lựa chọn có thể gây ra bế tắc không? 2 Câu trả lời. Bế tắc xảy ra khi một truy vấn có được một khóa trên một đối tượng (hàng, trang dữ liệu, phạm vi, bảng, v.v.) và tài nguyên khác cố gắng truy cập nó. Đơn vị nhỏ nhất trong SQL Server là các trang dữ liệu và SQL giữ một khóa trên trang khi làm việc trên đó. Vì vậy, có, có thể là hai lựa chọn tuyên bố có thể tạo ra bế tắc.

Ngoài ra, làm thế nào chúng ta có thể ngăn chặn bế tắc trong cơ sở dữ liệu?

Mẹo tránh bế tắc

  1. Đảm bảo thiết kế cơ sở dữ liệu được chuẩn hóa đúng cách.
  2. Phát triển các ứng dụng để truy cập các đối tượng máy chủ theo cùng một thứ tự mỗi lần.
  3. Không cho phép bất kỳ đầu vào của người dùng trong quá trình giao dịch.
  4. Tránh con trỏ.
  5. Giữ các giao dịch càng ngắn càng tốt.

Làm thế nào để bạn sửa chữa một bế tắc?

Một nhà phát triển thông minh phải thực hiện các bước sau để khôi phục từ bế tắc:

  1. Kiểm tra lỗi số 1205, khi một ngoại lệ được đưa ra.
  2. Tạm dừng ứng dụng trong thời gian ngắn để cho truy vấn khác có thời gian hoàn thành giao dịch của nó và giải phóng các khóa đã mua của nó.
  3. Gửi lại truy vấn, đã được SQL Server khôi phục.

Đề xuất: