sql >> データベース >  >> RDS >> Mysql

マルチスレッド環境でのトランザクションの処理

    いくつかの中間データ構造内の複数のスレッドからのすべてのSQLアクションをキューに入れてから、単一のスレッドからデータベースに入れることをお勧めします。 ConcurrentHashMapのようなスレッドセーフな中間構造を持つことが可能です。 、ConcurrentLinkedQueue または、操作時に同期するだけでもかまいません。

    これにより、事前にトランザクションを開始する必要がなくなります。保留中のデータは安全性が低い可能性がありますが、トランザクションがまだコミットされていない間は、データベース内でそれほど安全ではないと思います。

    もちろん、これはselectがない場合にのみ機能します 同じトランザクションからコミットされていないトランザクションデータを選択するステートメント。このようなクエリを何らかの方法で取り除くには、再設計が必要になる場合があります。

    CountDownLatchを使用します すべてのデータの準備が整い、データベース書き込みスレッドがアクションを開始する必要があることを検出します。発生しない場合は、データベース書き込みスレッドにreactorパターンを使用してください。



    1. 特定のデータベースからすべてのテーブル名、列名、および列値を取得します

    2. MySQLでテーブルを切り捨てる方法

    3. データ品質とあいまい検索

    4. グラフのエッジの重みを見つけるためのMySQLクエリ