ロストは、ダーティリード、反復不能読み取り、ファントム読み取り、データベースを更新します

1.失われたアップデート

場合は、トランザクション・後退、更新データBのトランザクションは、カバーを提出されました。

 

 

 

 

2.ダーティリード

ダーティリードトランザクションは、Aリード・トランザクションで発生した他の変形Bですが、データが送信されていません。
Bロールバックした場合、Aは、データを読み取るトランザクションが無効です。

 

 

 

 

3.非反復可能読み取り

 

トランザクション内の平均、同じデータを読み取る複数回が、トランザクションAが終了していない、B別のトランザクションがデータを変更しています。
トランザクションAは、Bデータを再度修正するためにデータトランザクションを読んだ後、トランザクションがデータを読み取ることと、最初の読み出しデータは同じではありません。

 

これを2回読み出しトランザクションデータで発生する繰り返し読まを参照することができない、同じではありません。

 

 

 

マジックリーディング(挿入のために、削除操作)
ファントムリードは、2つの同一のクエリの実行を生じ、最初のクエリセットで返される第2の照会結果が同じではありません。

分離レベル
読み取りコミットされていない(非コミット読み取り) -アドレスへの更新の損失
分離の最低レベル。トランザクションがコミットしていない別のトランザクションの更新結果を読むことができます。

コミット読み取り(読み取りコミット) -解決失われたアップデート、ダーティ・リード
のデータベースのほとんどの地域で使用されるデフォルトの分離レベルを。唯一のトランザクションのコミット後にトランザクションの結果を更新し、他のトランザクションは、データ更新のパケットで結果を読むことができます。

反復可能読み取り(繰り返し読み) -解決失われたアップデートは、ダーティリード、非反復は、読み込み
のMySQLのデフォルトレベルを。全体のトランザクション処理、データの同じ合計に結果を読み取るかかわらず、共有データ内の他のトランザクションが更新され、そしてかどうかを提出するように更新されているかどうかの、同じです。

直列化(シリアライズ) -解決失われたアップデート、ダーティリード、反復不能読み取り、ファントム読み取り
の分離の最高レベルを。すべてのトランザクションは順番に操作を実行します。これは、減少した同時性に最悪のパフォーマンスをリードすることに注意してください。他の並行レベルでそれを置き換えるために、対応するロック機構と通常同時。

 

アドレスの不一致運用上の問題に上記のデータは、データベースのロック機構を介して解決されます。行レベルのロッキングとテーブル・レベルのロッキングに分割ロックオブジェクトをクリックし、同時トランザクションに基づいてビューの関係ポイントをロック:共有し、排他ロックに分割されます。データを変更するには、データベース内の行上の行には排他ロックを変更するために適用する必要があり、挿入、更新、削除、一般的には、暗黙のうちに必要な行ロックを採用します。ロックベースのメカニズムは、4つの顔データベースのトランザクション分離レベルは、ユーザーが唯一のトランザクション分離レベルを設定する必要があり、トランザクションは、SQL文を分析し、自動的に適切なロックを選択します。これは、負の相関関係にデータベースの同時実行の分離レベル、悪い性能、その分離レベルと同時性能トランザクション・データベースより高い、ことは注目に値します。

下に示すように、分離レベルの具体的な詳細:

おすすめ

転載: www.cnblogs.com/sidesky/p/12465372.html