sql >> Database teknologi >  >> RDS >> Mysql

Håndtering af transaktioner i flertrådsmiljø

Jeg vil foreslå at sætte alle SQL-handlinger fra flere tråde i kø i en mellemliggende datastruktur og derefter lægge i databasen fra en enkelt tråd. Det er muligt at have trådsikre mellemstrukturer som ConcurrentHashMap , ConcurrentLinkedQueue eller du kan bare synkronisere, når du arbejder med det.

På denne måde behøver du ikke engang at starte transaktionen på forhånd. De afventende data kan være mindre sikre, men jeg antager, at de ikke er meget mere sikre i databasen, mens transaktionen ikke er forpligtet endnu.

Dette kan selvfølgelig kun fungere, hvis du ikke har select erklæringer, der vælger ikke-forpligtede transaktionsdata fra den samme transaktion. At slippe af med sådanne forespørgsler på en eller anden måde kan kræve omdesign.

Brug CountDownLatch for at registrere, hvornår alle data er klar, og databaseskrivetråden skal starte sin handling. Hvis det aldrig sker, skal du bruge reaktormønster til databaseskrivetråden.



  1. C++ Program, der kommunikerer med MySQL-databasen

  2. Hvordan opretter man tabel i Oracle SQL Developer?

  3. Sådan bruger du visninger i en MySQL-database

  4. Omdøb en primær nøgle i SQL Server (T-SQL)