sql >> Database >  >> RDS >> Mysql

Transactie afhandelen in multithreaded omgeving

Ik zou willen voorstellen om alle SQL-acties van meerdere threads in een tussenliggende gegevensstructuur in de wachtrij te plaatsen en vervolgens vanuit een enkele thread in de database te plaatsen. Het is mogelijk om de thread veilige tussenstructuren te hebben zoals ConcurrentHashMap , ConcurrentLinkedQueue of je kunt gewoon synchroniseren als je ermee werkt.

Zo hoeft u de transactie zelfs niet van tevoren te starten. De lopende gegevens zijn misschien minder veilig, maar ik neem aan dat ze in de database niet veel veiliger zijn zolang de transactie nog niet is vastgelegd.

Dit kan natuurlijk alleen als je select . niet hebt overzichten die niet-vastgelegde transactiegegevens uit dezelfde transactie halen. Om op de een of andere manier van dergelijke vragen af ​​te komen, kan een nieuw ontwerp nodig zijn.

Gebruik CountDownLatch om te detecteren wanneer alle gegevens gereed zijn en de thread voor het schrijven van de database zijn actie zou moeten starten. Als dit nooit gebeurt, gebruik dan het reactorpatroon voor de thread voor het schrijven van de database.



  1. Meerdere sets of arrays van waarden doorgeven aan een functie

  2. mysql draaitabel met tekenreekswaarden

  3. opgeslagen in mysql-veld maar geen regeleinde bij echo

  4. opeenvolgende nummers selecteren met behulp van SQL-query