ネットワーク経由でSQLサーバーからfirebirdにデータをコピーしています。整合性のためにトランザクションを使用する必要がありますが、約 9k 行を転送しています。非トランザクションモードでの読み取りに対して、開かれたトランザクションでの読み取りは、読み取りコストに何らかの悪影響を及ぼしますか?
2 に答える
「非トランザクション モード」は単に存在しません。宣言するかどうかに関係なく、常にトランザクションが存在します。問題は、暗黙的なトランザクションでの読み取りと明示的なトランザクションでの読み取りに違いがあるかどうかです。短い答えはノーです。違いはありません。
デフォルトの READ_COMMITTED 以外のより高い分離レベルで明示的なトランザクションを使用すると、多少の違いが生じる場合があります。明示的なトランザクションで他に何かを行うかどうかにも依存しますが、これらすべての詳細は、投稿の質素な情報から推測することはできません.
デフォルトのトランザクション分離レベルは READ COMMITTED です。クエリを実行している間、他の人のためにテーブルをロックします。
トランザクション分離レベルに関する MSDN: http://msdn.microsoft.com/en-us/library/ms173763.aspx
ロックのデッドロックに関する奇妙なエラー メッセージが時々表示されるという問題がありました。これは、stackoverflow にも起こりました。Jeff Atwood によるこの素晴らしい記事を参照してください。エラーとパフォーマンスの問題を解決する「コミットされたスナップショットの読み取り」に切り替えることを強くお勧めします。