4

SET TRANSACTION ISOLATION LEVEL READ COMMITTEDトレース時にColdFusion8をMSSQLで使用しているときに、DBAは、クエリ自体にはないcfquery呼び出しが追加されていることに気付きました。彼は、パフォーマンス上の理由から、それを削除するか、コミットされていないものに変更することを推奨しました。

これはColdFusionが追加しているものですか、ColdFusionやMSSQLのデフォルトですか?

私は、ColdFusionのデフォルトのMSSQLドライバを使用していると私は使用して、一時的な変化にできる午前<cftransaction isolation="read_uncommitted">cfquerysのそれぞれの周りにタグを。

ColdFusionで追加されるから、それを停止するには、他の方法がありますかたcftransactionが最善の方法ですか?

最後の質問、使用する場合、クエリの追加の前であるが直後にisolation="read_uncommitted"追加するのはなぜですか?SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDSET TRANSACTION ISOLATION LEVEL READ COMMITTED

前もって感謝します。

4

2 に答える 2

2

コミットは、特に指定の分離レベルを持っていないDBへのクエリのデフォルトの分離レベルです。あなたは、実行の継続のためにそれを変更すると、それは「コミット」に戻ります。文の作成は、CFなどと一緒にJDBCドライバの作品「フードの下」に行くものの一部です。それが変更から他の接続またはクエリを防止したり、データを読み込まずに読み取るため「READ_UNCOMMITTED」を使用して高速です。それはあなたのDBAが正しいかもしれないので、あまり問題ではありません多くのケースを(あなたがコミットされていないので、おそらく間違ったデータを読んでいる)が、中に「ダーティー読み取り」の可能性を開くようにします。

于 2012-06-01T18:56:00.063 に答える
2

これは正しく解釈されていません。read_committedは「分離」の問題です。他のタスクで更新/挿入/削除のためにテーブルが開いている場合、「read_committed」にあるトランザクションは、ロックがテーブルから解放されるまで待機されます。トランザクションがコミットされます。トランザクションが「read_uncommitted 」に設定されている場合、既存のデータから直接読み取り、保留中の更新/挿入/削除を待機しません 。したがって、「ダーティ」という用語は、保留中の、コミットされていないものは返されませんが、ロックされたり遅延したりすることはありません。

于 2014-03-18T15:55:12.960 に答える