Có "SELECT ... FOR UPDATE"
khóa các hàng được nối trong MySQL không?Khóa MySQL InnoDB trên các hàng đã tham gia
Nếu có, bạn có thể tắt hành vi này không?
Không có gì về điều này trong tài liệu. Tôi đã thấy rằng Oracle hỗ trợ "SELECT ... FOR UPDATE OF table_name"
trong đó table_name là bảng chính hoặc một trong các bảng đã nối mà các hàng bị ảnh hưởng sẽ bị khóa, nhưng tôi chưa bao giờ thấy điều này được đề cập trong ngữ cảnh với MySQL.
bản sao kê cập nhật có khóa các hàng trong các bảng khác không? Tôi nghĩ rằng nó nên (có thể nó phụ thuộc vào mức độ cô lập), như các giá trị trong bản cập nhật có thể phụ thuộc vào các giá trị trên bảng khác. Bạn có cần sử dụng để cập nhật không? Có thể khóa trong chế độ chia sẻ là những gì bạn đang tìm kiếm? Dù sao, tôi là cá nhân quan tâm đến câu trả lời này, nhưng có lẽ cách duy nhất để nói là để kiểm tra này. –
Tôi đã thực hiện một số nghiên cứu với thông tin nâng cao được cung cấp bởi plugin InnoDB và số hàng mà giao dịch của tôi đang khóa và hành vi ứng dụng của tôi, tôi sẽ nói rằng MySQL đang khóa tất cả các hàng được nối cùng với các hàng của bảng chính . Tôi đã không thể tìm thấy một điều khoản truy vấn hoặc một tùy chọn InnoDB mà sẽ thay đổi điều này, vì vậy có vẻ như chúng tôi đang mắc kẹt với hành vi mặc định này cho bây giờ. –
Tôi tìm thấy câu trả lời trong Tài liệu MySQL – RolandoMySQLDBA