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

Giải thích bế tắc không thể giải thích

Thứ nhất, deadlock không phụ thuộc vào khóa rõ ràng. BẢNG KHÓA của MySQL hoặc sử dụng các chế độ cách ly giao dịch không mặc định KHÔNG bắt buộc phải có bế tắc. Bạn vẫn có thể gặp bế tắc nếu bạn không bao giờ sử dụng một giao dịch rõ ràng.

Bế tắc có thể xảy ra trên một bàn duy nhất, khá dễ dàng. Thông thường nhất là từ một bảng nóng.

Bế tắc có thể thậm chí xảy ra nếu tất cả các giao dịch của bạn chỉ thực hiện một lần chèn hàng.

Bế tắc có thể xảy ra nếu bạn có

  • Nhiều kết nối với cơ sở dữ liệu (hiển nhiên)
  • Bất kỳ hoạt động nào bên trong có nhiều hơn một khóa.

Điều không rõ ràng là hầu hết thời gian, một lần chèn hoặc cập nhật hàng liên quan đến nhiều hơn một khóa. Lý do cho điều này là các chỉ mục phụ cũng cần được khóa trong quá trình chèn / cập nhật.

CHỌN sẽ không khóa (giả sử bạn đang sử dụng chế độ cách ly mặc định và không sử dụng ĐỂ CẬP NHẬT) nên chúng không thể là nguyên nhân.

HIỂN THỊ TÌNH TRẠNG ĐỘNG CƠ INNODB là bạn của bạn. Nó sẽ cung cấp cho bạn một loạt thông tin (phải thừa nhận là rất khó hiểu) về các lần bế tắc, đặc biệt là các lần bế tắc gần đây nhất.

  • Bạn không thể loại bỏ hoàn toàn các bế tắc, chúng sẽ tiếp tục xảy ra trong quá trình sản xuất (ngay cả trên các hệ thống thử nghiệm nếu bạn nhấn mạnh chúng đúng cách)
  • Nhắm đến số lượng bế tắc rất thấp. Nếu 1% giao dịch của bạn bị bế tắc, thì con số đó có thể là quá nhiều.
  • Xem xét thay đổi mức độ phân lập giao dịch của các giao dịch của bạn thành cam kết đã đọc NẾU BẠN HIỂU HOÀN TOÀN CÁC GỢI Ý
  • đảm bảo rằng phần mềm của bạn xử lý các bế tắc một cách thích hợp.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn có thể lưu trữ bao nhiêu ký tự với 1 byte?

  2. Sao chép Cơ sở dữ liệu MySQL sang một máy khác

  3. Laravel 'không thể tìm thấy trình điều khiển (SQL:insert into ...'

  4. Làm cách nào để tạo một mô hình Django với ForeignKeys mà mô hình này không xóa phân tầng cho các mô hình con của nó?

  5. Các cột trong bảng có Khóa ngoại có thể là NULL không?