1) Tất cả các thay đổi bạn thực hiện đều hiển thị trong cùng một giao dịch. Nếu bạn làm như vậy
START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;
đầu ra của bạn sẽ bao gồm "Xin chào". Nhưng nếu bạn bắt đầu kết nối cơ sở dữ liệu thứ hai, hàng mới sẽ không được hiển thị cho đến khi bạn thực hiện giao dịch của mình từ bên trong kết nối đầu tiên. Hãy thử chơi với điều này bằng hai kết nối cơ sở dữ liệu bằng dòng lệnh.
Bạn không thấy hiệu ứng trong trang web của mình vì bạn không thể có cùng một giao dịch trong hai kết nối cơ sở dữ liệu (kết nối db mới sẽ được thực hiện khi bắt đầu yêu cầu của bạn).
2) Tất cả các giao dịch không được cam kết sẽ được khôi phục khi kết nối với cơ sở dữ liệu bị đóng. Vì vậy, nếu đây là hai truy vấn duy nhất của bạn, không có sự khác biệt. Tuy nhiên có sự khác biệt giữa
START TRANSACTION;
INSERT INTO MyTable VALUES ('This one would be discarded on rollback');
ROLLBACK;
INSERT INTO MyTable VALUES ('This one will be permanent because not within transaction');
3) Có, tất cả đều giống nhau.