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

MySQL concurrency, nó hoạt động như thế nào và tôi có cần xử lý nó trong ứng dụng của mình không

Các câu lệnh SQL là nguyên tử. Đó là, nếu bạn thực thi một cái gì đó như thế này:

UPDATE Cars SET Sold = Sold + 1

Không ai có thể thay đổi Sold biến trong câu lệnh này. Nó luôn được tăng thêm 1, ngay cả khi ai đó khác đang thực hiện đồng thời cùng một câu lệnh.

Sự cố xảy ra nếu bạn có các câu lệnh phụ thuộc vào nhau:

a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;

Giữa các truy vấn này, người dùng khác có thể thay đổi bảng Ô tô và cập nhật Đã bán. Để tránh điều này, hãy gói nó trong một giao dịch:

BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;

Giao dịch được hỗ trợ bởi InnoDB, nhưng không được hỗ trợ bởi MyISAM.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN VÀO ... CHỌN TỪ ... TRÊN CẬP NHẬT KHÓA DUPLICATE

  2. MySQL trên khóa trùng lặp ... lấy ID hiện có?

  3. Các vấn đề về mã hóa văn bản C # trong MySQL

  4. mysql.sock không được tạo OSX

  5. Làm cách nào tôi có thể nhận được số lượng khách hàng mỗi ngày theo khách hàng duy nhất và khách hàng lặp lại cho ngày cụ thể?