sql >> Databasteknik >  >> RDS >> Mysql

Hantering av transaktioner i flertrådsmiljö

Jag skulle föreslå att köa alla SQL-åtgärder från flera trådar i någon mellanliggande datastruktur och sedan lägga in i databasen från en enda tråd. Det är möjligt att ha trådsäkra mellanstrukturer som ConcurrentHashMap , ConcurrentLinkedQueue eller så kan du bara synkronisera när du arbetar med det.

På så sätt behöver du inte ens starta transaktionen i förväg. De väntande uppgifterna kan vara mindre säkra, men jag antar att de inte är mycket säkrare i databasen medan transaktionen inte är genomförd ännu.

Naturligtvis kan detta bara fungera om du inte har select uttalanden som plockar oengagerad transaktionsdata från samma transaktion. Att bli av med sådana frågor på ett eller annat sätt kan kräva omdesign.

Använd CountDownLatch för att upptäcka när all data är klar och databasskrivtråden bör starta sin åtgärd. Om det aldrig händer, använd reaktormönster för databasskrivtråden.



  1. PHP PDO MySQL IN (?,?,?

  2. Hur man ändrar standardvärdet för en kolumn med hjälp av en procedur

  3. Sparar sökvägen till databasen / SQL

  4. Hur lagrar jag 3 listor med alternativknappar i mysql-databasen i en kolumn, olika rader?