Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obsługa transakcji w środowisku wielowątkowym

Sugerowałbym zakolejkowanie wszystkich akcji SQL z wielu wątków w jakiejś pośredniej strukturze danych, a następnie umieszczenie ich w bazie danych z jednego wątku. Możliwe jest posiadanie bezpiecznych dla wątków struktur pośrednich, takich jak ConcurrentHashMap , ConcurrentLinkedQueue lub możesz po prostu zsynchronizować się podczas pracy z nim.

W ten sposób nie musisz nawet rozpoczynać transakcji z wyprzedzeniem. Oczekujące dane mogą być mniej bezpieczne, ale zakładam, że nie są one dużo bezpieczniejsze w bazie danych, gdy transakcja nie została jeszcze zatwierdzona.

Oczywiście może to działać tylko wtedy, gdy nie masz opcji select wyciągi pobierając dane niezatwierdzonych transakcji z tej samej transakcji. Pozbycie się takich zapytań w taki czy inny sposób może wymagać przeprojektowania.

Użyj CountDownLatch aby wykryć, kiedy wszystkie dane są gotowe i wątek zapisu bazy danych powinien rozpocząć swoją akcję. Jeśli nigdy się to nie stanie, użyj wzorca reaktora dla wątku zapisu bazy danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wydrukować Datagridview ma tabelę w VB

  2. Korzystanie z metody konstruktora zapytań Laravel gdzieIn() z zapytaniem podrzędnym

  3. SQL scalanie zduplikowanych wierszy i łączenie wartości, które są różne

  4. MySQL:Sortuj wartości GROUP_CONCAT

  5. Łączenie wielu wierszy lub wyników z tym samym tytułem w celu utworzenia rozwijanych menu z PHP i MySQL