「Chaos」分離レベルとは何ですか、いつ使用する必要がありますか?


26

ADO.NETのドキュメントには、SQLトランザクションのトランザクションレベルをChaosに設定する可能性が示されています。不快に聞こえますが、機能が存在する場合は、おそらく正当な使用方法があります。

BOL のSET TRANSACTION ISOLATION LEVELコマンド(ああ!わかりました、GoogleとBOLを使用できます)は何も「カオス」という名前ではないようです。ADO.NETには、「カオス」に加えて文書化されたレベル

このカオスのレベルは何ですか?(そして、なぜそれは非友好的な名前を持っていますか?)

参照: ADO.NET列挙型

回答:


11

DB2のドキュメントによると、これは奇妙な分離レベルであり、変更を実行するとすぐにデータベースにコミットされます(他の人が見ることができます)。

それは明示的に言っていませんが、私が知る限り、ロールバックもありません。基本的に、トランザクションがまったくないことを意味します。「あなたは「トランザクション」と言いますが、私はあまり気にしません」。したがって->カオス。

実際、いくつかの電子メールリストで、「Chaos」が「DB2 for i」の「* NONE」トランザクションレベルに実際にマッピングされていることがわかりました。


カオスは、ReuterとGrayのトランザクション処理理論で説明されているように、Degree 0の分離です。Read Uncommittedが実際に読み取られるデータの分離に関連していると思われる場合(そして、偶然、カオスと同じではありません)。カオス(他の分離度と同様)には多くの特性があります。最も興味深いものの1つは、Degree 3(シリアル化可能な反復可能読み取り)に違反する能力です。結論として、カオスは正しいコンテキストでのみ使用する必要があります(つまり、ロールバックを必要としないデータセットに対して完全に分離して実行することをお勧めします)。
マークブロードベント

11

SQL Serverに対しては使用できません。

DTSにありました:

そしてSSISにあります:

Nick Chammasによって元々コメントに追加されたその他の参照:


7

DB2には、「Chaos」と呼ばれるトランザクション分離レベルがあります。

DB2Connection.ConnectionStringプロパティー -IBM Knowledge Center

おそらくそれはそのために使用されることを意図しています。確かではありませんが、定義可能なトランザクション分離がないことを意味すると思います。


2
System i専用のようです。それが何を意味するか知っていますか?私はそれについて多くの情報を見つけることができません、それはコミットしないと言うので、私はそれが各ステートメントが即座にコミットされることを意味すると仮定します。しかし、これは分離レベルに直交しているように見えるので、おそらく何か他のものがあります
レナート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.