2

トランザクションの ACID プロパティについて混乱しています。
私の理解によると、
トランザクションはACID に準拠している必要があります。一連のステートメントが実際にトランザクションであることを保証するのは ACID です。これまでのところ大丈夫です。
現在、さまざまな分離レベルがあります (完全に非トランザクション モードであるため、READ-UNCOMMITED は除外しています): READ-COMMITED、READ-REPEATABLE、および SERIALIZABLE

したがって、私が理解できないのは次のとおりです。
さまざまな分離レベルが前提条件のACIDプロパティの異なるレベルを提供する場合、それらはどのようにして有効/許容可能な分離レベルになることができますか?
それとも、トランザクションとは何かという SQL の定義は、これらの違いが発生するほど緩和/非形式的/非厳密なのでしょうか? 読んで実際の定義が何であるかを確認するためのSQL標準ドキュメントが見つかりませんでした

4

3 に答える 3

0

なぜ異なる取引レベルを持っている/受け入れるのですか?

理論的には、各トランザクションは (ACID プロパティの I を達成するために) 分離して実行する必要がありますが、実際にはあまり意味がありません。それはすべてパフォーマンスの問題です。同時実行性の高いアプリケーションのデータベースは、この方法では適切に実行できませんでした。

アイデアは、分離とパフォーマンスのバランスをとることです。分離レベルを下げると (通常、デフォルトの分離レベルである COMMITTED READ など)、更新の消失、反復不可能な読み取り、ファントム読み取りなど、ある種の問題が発生する可能性があります。通常、このリスクは許容され、特定のトランザクションでのみ分離レベルを上げて制御することもできます。

于 2013-10-15T11:11:49.697 に答える
0

ACID は素晴らしいものであり、ACID は望ましいものであり、ACID は素晴らしいものです。

しかし、ACIDは標準です。標準的な存在は、すべての実装者プレイヤーを自動的に支持させるわけではありません。

なんらかの方法で ACID 動作を提供する場合、RDBMS は ACID 準拠です。すべての DMBS が ACID に準拠しているわけではありません (MySQL は最近まで ACID に準拠していませんでした)。

ACIDは理想の世界です。分離レベルは現実世界です。

于 2013-10-14T21:16:01.180 に答える