sql >> Databáze >  >> RDS >> Mysql

Zpracování transakcí ve vícevláknovém prostředí

Navrhoval bych zařadit všechny akce SQL z více vláken do nějaké mezilehlé datové struktury a poté je vložit do databáze z jednoho vlákna. Je možné mít pro vlákna bezpečné mezilehlé struktury jako ConcurrentHashMap , ConcurrentLinkedQueue nebo se můžete při práci s ním jen synchronizovat.

Tímto způsobem dokonce nemusíte zahájit transakci předem. Nevyřízená data mohou být méně bezpečná, ale předpokládám, že v databázi nejsou o mnoho bezpečnější, dokud transakce ještě není potvrzena.

To samozřejmě může fungovat pouze v případě, že nemáte select výpisy vybírající data o nepotvrzené transakci ze stejné transakce. Zbavit se takových dotazů tak či onak může vyžadovat přepracování.

Použijte CountDownLatch zjistit, kdy jsou všechna data připravena a vlákno zápisu databáze by mělo zahájit svou akci. Pokud se tak nestane, použijte pro vlákno zápisu databáze vzor reaktoru.



  1. MySQL Vyberte řádky při prvním výskytu každé jedinečné hodnoty

  2. Získejte zřetelný součet spojeného sloupce tabulky

  3. Jak zabráním vkládání sql pomocí php a mysql

  4. Vyladění MySQL pro rychlé vytváření sloupců/indexů během vývoje