Tôi có một câu hỏi liên quan đến giao dịch và giao dịch mysql.mysql cam kết và giao dịch
Tôi có một vài câu lệnh php thực thi truy vấn mysql.
Tôi chỉ cần nói những điều sau đây?
mysql_query("START TRANSACTION");
//more queries here
mysql_query("COMMIT");
Chính xác điều này sẽ làm gì? Nó giúp như thế nào? Đối với các cập nhật, xóa và chèn, tôi cũng tìm thấy điều này để chặn các truy vấn khác không đọc được:
mysql_query("LOCK TABLES t1 WRITE, t2 WRITE");
//more queries here
mysql_query("UNLOCK TABLES t1, t2");
Điều này có thể chặn các truy vấn khác về bản chất hoặc chỉ ghi/chọn không?
Một câu hỏi khác: Nói một truy vấn đang chạy và chặn các truy vấn khác. Truy vấn khác cố truy cập dữ liệu bị chặn - và nó thấy rằng nó bị chặn. Làm thế nào nó tiến hành? Liệu nó có chờ cho đến khi dữ liệu được bỏ chặn một lần nữa và tái thực hiện truy vấn? Liệu nó chỉ thất bại và cần được lặp lại? Nếu vậy, làm thế nào tôi có thể kiểm tra?
Cảm ơn rất nhiều!
Dennis
Bạn đang sử dụng các bảng InnoDB hoặc MyISAM? – Daan
@ Tôi có thể sử dụng InnoDB – weltschmerz