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

Khi nào tôi nên sử dụng các giao dịch MySQL?

Giao dịch được sử dụng khi bạn có một nhóm truy vấn phụ thuộc vào nhau.

Ví dụ, một ngân hàng:

  • Khách hàng của ngân hàng "John" chuyển $ 100 vào tài khoản của "Alice".
  • Đối với ví dụ này, có 2 truy vấn (Tôi không hiển thị nhật ký hoặc lịch sử giao dịch ... vv). Bạn cần trừ 100 đô la từ số dư của John và thêm số đó vào số dư của Alice.
  • Start transaction
  • Khấu trừ từ John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Thêm vào Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Một giao dịch sẽ không được lưu cho đến khi bạn thực hiện nó. Vì vậy, nếu có lỗi trong một trong hai truy vấn, bạn có thể gọi rollback và hoàn tác bất kỳ truy vấn nào đã chạy kể từ khi giao dịch được bắt đầu. Nếu vì lý do nào đó mà truy vấn thêm $ 100 vào Alice không thành công, bạn có thể hoàn nguyên và không khấu trừ $ 100 từ John. Đó là một cách để đảm bảo rằng bạn có thể hoàn tác các truy vấn tự động nếu cần.

  • Tôi có nên bắt đầu giao dịch khi thực hiện hai hoặc nhiều truy vấn xóa / cập nhật / chèn không?

    Phụ thuộc vào những gì các truy vấn đang thực hiện.

  • Tôi cũng có nên bắt đầu giao dịch khi chỉ có một truy vấn xóa / cập nhật / chèn không?

    Không cần thiết trừ khi bạn cần một cách để khôi phục (hoàn tác) truy vấn như bạn muốn cập nhật và xác thực nó trước khi gọi commit (lưu).

  • Tôi có nên bắt đầu một giao dịch như 10 lần trên một trang hay tốt hơn là chỉ một lần cho toàn bộ trang hay bạn đề xuất giá thầu tối đa cho mỗi trang (ví dụ 5)?

    Bắt đầu bao nhiêu tùy thích. Tôi sẽ nghi ngờ rằng bạn có nhiều giao dịch trên mỗi trang vì rất có thể bạn sẽ thực hiện một việc trên mỗi lần tải trang (tức là chuyển tiền).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mọi bảng dẫn xuất phải có lỗi bí danh riêng

  2. Ánh xạ Doctrine 2 tham chiếu đến khóa duy nhất

  3. ngày thứ sáu cuối cùng của tháng trong MySQL

  4. Chèn ngày định dạng mm / dd / yyyy trong MySQL

  5. PHP để lưu trữ hình ảnh trong MySQL hay không?