トランザクションとは何ですか?
一般的には何をするか、行っているものを指します。この用語は、プログラム実行部データアイテム(ユニット)の様々なデータベースにアクセスして更新することができるコンピュータを意味します。
トランザクションは、SQLステートメント、SQL文やプログラム全体の集合とすることができます。
そうデータベースおよびトランザクションが4つのプロパティに関連付けられた、トランザクションのトランザクション分離レベルは、データベースについてです。
トランザクションの4つの特徴を理解する(ACID)
1、アトミック(不可分)
あなたが取引を開いた場合、そのトランザクションは、SQL文を含むいずれかのすべての実行またはトランザクションは、SQLステートメント、SQL文のセットまたは全プログラムすることができ前に私が言ったように、すべての実行されません。
例:転送サービス:A、Bのどちらかが100元を得る失うことに100元、100元をBにターン、転送が成功した場合、または100元はまだあり、AのBは100元を受け取っていない、転送失敗
2.一貫性(整合性)
追加および削除のためのサービスは、データの整合性を確保するために、データベースの動作を変更します
たとえば、次の転送操作が合計数は、多かれ少なかれ不可能千元であり、これは一貫していることを確実にする千元、B口座のお金、AB間の相互転送を占め、それは、データが実数でなければならないことを意味しますソースがある、そこに起こっている、空中から現れたり消えません。
図3に示すように、分離(単離)
また、独立性と呼ばれるトランザクションの分離は、発生していない事務の状態の二つ以上の千鳥実装を指します。このよう一貫性のないデータをもたらすことができます。
図4に示すように、永続的な(耐久性)
トランザクションが成功した後、データベースへの変更は、理由もなく恒久的なロールバックされませんされています。
理解のトランザクション分離レベル
(非コミット読み取り)コミットされていないが、ダーティリードが起こっ読みます
トランザクションは、別のコミットされていないトランザクションからデータを読み取ることができます
トランザクションは、データベースへの変更をしたが、データを修正するために、(コミット)私たちが読むことができる時間(照会)を提出しませんが、トランザクションのロールバック(ロールバック)場合には、データはデータが汚れている前に、我々は読んで無効なデータ。全体的にこの分離レベルはどうなるダーティリードの状況を
読み取り(コミット読み取り)解決ダーティリード、非反復可能読み取りが発生したコミット
トランザクションは、トランザクションが別の読み出しデータをコミットするまで待機します。
例:Aのキャリーが無いた100元を過ごすためにするとき、銀行カードは、その後、彼の妻は離れて100元を回すために、$ 100
しかし、二度同じクエリのトランザクションの範囲内で何が起こったかで異なるデータ、取得非反復可能読み取りを
反復可能読み取り(反復可能読み取り)が汚れて解決読み込み、非反復可能読み取りは、ファントム読み込みが発生しました
トランザクションは、操作を変更する他のトランザクションを実行するために開くことが許可されていない場合。
Bトランザクションがデータベースを照会しながら、クエリデータは、2つが同じでないことが分かったときに開いているデータベーストランザクションへの変更は、最初のクエリのB側はこれは、再び改質A、Bを提出したファントムを読み出します。
シリアライズ(直列化)が読み出し汚い、非反復リードとファントムリードを解決しました
最高のトランザクション分離レベル、このレベルではほとんど使用されない最高のコスト、低性能、コスト、発生するような状況を回避するために枝ため。