0

READ COMMITED 分離レベルと少し混乱しています。トランザクション X (開始) が行を読み取り、行を変更し、行を再度読み取る場合、これは特定の分離レベルのダーティー読み取りと見なされますか?

4

1 に答える 1

0

トランザクションは、トランザクション分離レベルに関係なく、行った変更をいつでも読み取ることができます。それは汚い読みではありません。

READ COMMITTED は、トランザクションが、他のトランザクションによって行われた最新のコミットされた変更を見ることを意味します。

READ UNCOMMITTED は、トランザクションがまだコミットされていなくても、他のトランザクションで行われた変更を見ることができることを意味します。それは汚い読みです。これは本当にあなたが望むものではないでしょう。


あなたのコメントを再。

書店向けのアプリがあるとします。誰かが最新のダン・ブラウンの本を 100 部買おうとしています。最初に私のアプリは本の在庫をゼロに更新し、次にクレジット カードの検証を試みます。彼らのクレジット カードには、書籍 100 部の支払いに十分なクレジットがないため、書籍は拒否されました。その後、トランザクションはロールバックされ、元の在庫数に戻ります。

その間、アプリは在庫レベルを監視して、いつ本を再注文するかを確認しています。READ UNCOMMITTED を使用すると、ストックがゼロになったことを簡単に確認できます。つまり、アプリの更新後、ロールバック前です。あなたのアプリは非常に効率的で、すぐに出版社に新しい箱の本の新しい注文を送信します。

数日後、本の余分な箱を受け取りましたが、まだ古い在庫があるため、本棚にスペースがなく、誰かがつまずいて怪我をするまで、余分な箱が通路に残されます。:-(

READ COMMITTED だけを使用した場合、誰かの足首のねじれに対して責任を負うことはありません。

于 2013-10-14T20:53:07.257 に答える