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

Xử lý giao dịch trong môi trường đa luồng

Tôi sẽ đề xuất xếp hàng tất cả các hành động SQL từ nhiều luồng trong một số cấu trúc dữ liệu trung gian, và sau đó đưa vào cơ sở dữ liệu từ một luồng duy nhất. Có thể có các cấu trúc trung gian an toàn cho luồng như ConcurrentHashMap , ConcurrentLinkedQueue hoặc bạn có thể chỉ đồng bộ hóa khi làm việc với nó.

Bằng cách này, bạn thậm chí không cần bắt đầu giao dịch trước. Dữ liệu đang chờ xử lý có thể kém an toàn hơn, nhưng tôi cho rằng chúng không an toàn hơn nhiều trong cơ sở dữ liệu khi giao dịch chưa được cam kết.

Tất nhiên, điều này chỉ có thể hoạt động nếu bạn không có select câu lệnh chọn dữ liệu giao dịch không được cam kết từ cùng một giao dịch. Loại bỏ các truy vấn như vậy theo cách này hay cách khác có thể yêu cầu thiết kế lại.

Sử dụng CountDownLatch để phát hiện khi nào tất cả dữ liệu đã sẵn sàng và luồng ghi cơ sở dữ liệu sẽ bắt đầu hành động của nó. Nếu không bao giờ xảy ra, hãy sử dụng mẫu lò phản ứng cho luồng ghi cơ sở dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lưu trữ các giá trị NULL trong các trường datetime trong MySQL?

  2. PHP MYSQL INSERT giúp không có lỗi

  3. Mã hóa AES trong mysql và php

  4. Không thể thấy giá trị trường BIT của MySQL khi sử dụng SELECT

  5. Xóa hàng:Không có thành viên nào có nhiều hơn x bản ghi