1

一意性制約に裏打ちされた主キーを持つテーブルがあります。したがって、SERIALIZABLE 分離を使用するクエリは、同じ主キーを持つ 2 つの行を返すことはありません。しかし、それは READ COMMITTED 分離を使用したクエリにも当てはまりますか? 主キーの明らかな重複が不可能な、最も緩い分離レベルはどれですか?

4

2 に答える 2

2

主キーの明らかな重複が不可能な、最も緩い分離レベルはどれですか?

REPEATABLE READまたREAD COMMITTED SNAPSHOT

READ COMMITTEDSQL Server では、 (ロック)でのスキャンが行を 2 回読み取る可能性があります。

この分離レベルでは、ステートメントまたはトランザクションの最後ではなく、データが読み取られるとすぐに行ロックが解放されます。

したがって、キーの順序でインデックスを読み取るスキャンで、最初の読み取りの後にキーが更新され、インデックスの後半に移動した場合、同じ行に再び遭遇する可能性があります。実際に重複する主キーを観察するには、スキャンされるインデックスが PK 自体とは異なるキー列にある必要がある可能性があります。

REPEATABLE READまだ読み取られていないデータがインデックス内で既にスキャンされた部分に移動すると、行を見逃す可能性がありますが、これにより、明らかな重複主キーの現象が発生することはありません。

于 2013-10-30T16:33:43.517 に答える
0

OracleDB では、PK が延期可能で延期されない限り、それに違反することはできません。サポートされている最低の 'READ COMMITTED' レベル (ANSI/ISO レベル 1) であっても、同じ行を操作する別のセッションで行ロックが発生します。競合。したがって、2 番目のセッションの DML は、コミットまたはロールバックによって最初のロックが解放されるまで待機し続けます。その後、オンザフライで検証され、PK に違反すると失敗します。

于 2013-10-30T16:59:57.703 に答える