私は現在、古いシステムで、複数のスレッドReadUncommitted
のトランザクションで次のことを行っています:
- 各スレッドは、処理する固有のデータ セットを取得します。これらのスレッド間で重複することはありません。
- スレッドは、一意のデータ セットの一連のテーブル (読み取りのみ) からデータを収集します。
- 収集されたデータに基づいて、各スレッドは、後で書き込むためにメモリ内に n 個の新しいエンティティ、電子メールを作成します。
- 次に、電子メール エンティティごとに、スレッドは電子メール エンティティがテーブルに既に存在するかどうかを確認して、重複を回避する必要があります。これには、x 個の列を比較することが含まれます。
- その後、スレッドは、まだ存在しない電子メール エンティティを書き込みます。これらのタイプの電子メール エンティティを書き込むことができるのはスレッドとこのアプリケーションだけであり、スレッドは常に一意のデータ セットで動作するため、常にクリーンな挿入になることがわかっています。
- 次に、スレッドがコミットします。
これはきれいなデザインではないことはわかっていますが、システム全体をリファクタリングするのは大変な作業です。スレッド化の理由は、純粋にパフォーマンスを向上させるためです。
私の質問は:
ReadUncommitted
私の場合、分離レベルを使用することに危険はありますか?
最近、確認のために分離レベルについて何度も読んでいますが、SQL Server の経験はまだありません。
編集:分離レベルの使用に切り替える理由はReadUncommitted
、最適なパフォーマンスのために、スレッドを同時にコミットできるようにしたかったためです。