Tôi đã thử nghiệm hỗ trợ giao dịch trong các bảng innoDB và chỉ dành cho sự tò mò mà tôi đã cố gắng chạy cùng một giao dịch trên bảng MyIsam và đáng ngạc nhiên là nó hoạt động. Tôi giả định rằng trên các truy vấn bảng myIsam được thực hiện cái khác không phải trong một hoạt động nguyên tử và tôi không nhận được bất kỳ lỗi nào từ các hoạt động START TRANSACTION và COMMIT và ROLLBACK. Tôi quan tâm, là động cơ MyIsam chỉ bỏ qua hoạt động này hay nó thực hiện một số hành động?Hỗ trợ giao dịch động cơ MyIsam
Trả lời
MyISAM hoạt động hiệu quả trong chế độ tự động cam kết (vì nó không phải là một công cụ giao dịch), và nó chỉ bỏ qua cam kết/rollback.
Trên thực tế công cụ lưu trữ là một lớp khác trong kiến trúc MySQL, được tách biệt với trình phân tích cú pháp SQL, lớp SQL giao tiếp với công cụ lưu trữ với API cấp thấp hơn, và đó là lý do có SQL và động cơ thông thường tập hợp con nổi bật. Bạn có thể xem tổng quan cấp cao về kiến trúc here
Tab MyIsam không được xây dựng cho điều này. Thậm chí không có trong 5 phiên bản. Nó chỉ có nghĩa là để lưu trữ dữ liệu. Nó cung cấp cho bạn không đảm bảo cho các giao dịch hoặc phục hồi dữ liệu. Bạn nên sử dụng InnoDB cho điều này và, nếu cần thiết, sử dụng MyIsam cho mục đích nhân rộng (nó nhanh hơn để lấy dữ liệu với các bảng MyIsam vì không có kiểm tra bảng chéo).
Bạn có thể đọc bài này từ MySQL http://forums.mysql.com/read.php?21,68686,69229#msg-69229
- 1. Cuộc sống không có giao dịch (MyISAM)
- 2. Hỗ trợ giao dịch trong adbapi xoắn
- 3. Giao dịch mùa xuân với sự hỗ trợ Tuyên truyền
- 4. Giao dịch trong cơ sở dữ liệu wordpress
- 5. Công cụ lưu trữ cho bảng không hỗ trợ sửa chữa. InnoDB hoặc MyISAM?
- 6. Tại sao công cụ MyISAM của MySQL không hỗ trợ khóa ngoại?
- 7. Trình biên dịch hỗ trợ C11
- 8. Biên dịch ghc với hỗ trợ -fPIC
- 9. Làm cách nào để tránh lỗi giao dịch lồng nhau không được hỗ trợ?
- 10. Tìm kiếm Mysql - InnoDB và giao dịch so với MyISAM cho tìm kiếm toàn văn
- 11. MonoTouch và hỗ trợ biến giao diện chung
- 12. Có cơ sở dữ liệu nào hỗ trợ bộ đệm giao thức không?
- 13. ActionBar (Hỗ trợ) với Fragment (hỗ trợ)
- 14. Khi MyISAM tốt hơn InnoDB?
- 15. Thông báo về mức độ cô lập được hỗ trợ bởi Sql cho các giao dịch
- 16. Bắt "org.hibernate.TransactionException: lồng giao dịch không được hỗ trợ" lỗi khi xóa
- 17. Lỗi Opencv: không hỗ trợ GPU (thư viện được biên dịch không hỗ trợ CUDA)
- 18. Cách thêm hỗ trợ miền chéo vào dịch vụ WCF
- 19. Hỗ trợ GIF động trên Android
- 20. CORS với Internet Explorer - hỗ trợ xác thực cơ bản?
- 21. IE có hỗ trợ thẻ cơ sở không?
- 22. Windows Azure có hỗ trợ giao thức SPDY không?
- 23. Lỗi Loại: 'str' không hỗ trợ giao diện đệm
- 24. LoạiError: 'str' không hỗ trợ giao diện bộ đệm - python
- 25. IE8 - window.open() - "Không có giao diện nào được hỗ trợ"
- 26. git lưu trữ gây tử vong: Hoạt động không được hỗ trợ bởi giao thức
- 27. Giao dịch cơ sở dữ liệu Magento
- 28. LINQPad DB2 Hỗ trợ
- 29. InnoDB hoặc MyISAM - Tại sao không phải cả hai?
- 30. Hỗ trợ cơ sở dữ liệu trên Cloud 9
"làm việc" có nghĩa là bạn đã có thể quay ngược lại một tuyên bố DML hoặc bạn đã không nhận được lỗi cú pháp? –
Tôi đã thực hiện một câu lệnh chọn và chèn đơn giản và không nhận được bất kỳ lỗi nào. – Headshota
Vâng, sau đó xem câu trả lời của @ Darhazer. Bạn có thể không nhận được lỗi nhưng bạn sẽ không thực sự có giao dịch. 'INSERT' của bạn sẽ không được hoàn tác khi bạn phát hành' ROLLBACK'. –