トランザクション分離MySQLの学習

のは、今日の取引についてお話しましょう、私はそのトランザクションACID(原子性、一貫性、独立性、耐久性、すなわち原子性、一貫性、独立性、耐久性)私たちは皆知っていると信じています。

原子性:トランザクションは分裂で表現できない、とトランザクションの動作は一緒に成功するか失敗する一緒のいずれか。

一貫性:トランザクションの前と後のデータの整合性を一貫してすること。

永続性:トランザクションがコミットすると、そのデータを永続的に保存される変更、およびデータベースのダウンタイムは何の効果もないということ。

最初の3つはよく理解され、その後、私たちはトランザクションの分離と言う、分離トランザクションは、それが互いに取引事項に干渉しないだろうということですしかし、複数の事務の場合、または汚れの傾向があるが、反復不能読み取りとファントムは問題を読んで読み込みます。私たちは、単にその言葉を説明し、

ダーティ読み取り:トランザクションデータベースAが変更されたデータであるが、まだコミットまたはロールバックされていないを持っているとき、別のトランザクションBは、ダーティリードによって引き起こされ、この時、トランザクションAが提示し、修正し、使用の内容を読み取り。
非コミット読み取りの分離レベル:このような状況にのみ発生します。

 

非反復読取り:トランザクションの動作中のトランザクションデータA、(いない最終的な提出)における複数の動作、Bは、トランザクション処理を行う必要があり、この値が変更され、この時間は、トランザクションAの動作をもたらすであろう私たちは、データを発見し、初めて同じではありません。非反復可能読み取りです。
この状況は、ときにのみ発生します:コミットされていない分離レベルがコミット読み出します。

 

マジック読書:トランザクション同じクエリで前に見たデータ検索を再読み込みが、そのクエリ、ファントム読み取りと呼ばれる現象を満たすために新しいデータを挿入するから、他のトランザクションを見つけました。マジックリーディングは、トランザクションがテーブルの最初の取引データが修正された、例えば、独立して行われていない場合、そのような修飾は、このテーブルを含む発生する現象を意味する「全てのデータ線」を 同時に、また、2番目のトランザクションがこのテーブルのデータを変更するために、この変更は、テーブルに、「新しい行」を挿入することです。そして、ユーザがテーブルの発見は、データラインの修正はありません後、最初のトランザクションが発生する動作と同じで一般的な解決策は、ファントムの範囲を大きくすることである幻覚がロック範囲を読んで起こったかのように、狭い探索範囲を読み取り専用であります、これファントムを回避読み込みます。
この状況は、背中に発生します:コミットされ、反復可能読み取り分離レベルを読んで、コミットされていないお読みください。

 

上記の問題を持って、我々は、特定のトランザクション分離レベル、低トランザクション分離レベルより高い効率と言います。トランザクション分離レベルは、大きく、以下に分け

非コミット読み取り(コミットされていない読み取り)、読み取りコミット((COMMITED読んで)、反復可能読み取り(反復可能読み取り)とシリアライズ(直列化可能)。それから私は、分離レベルのこれらのタイプを説明し、

非コミット読み取り:トランザクションがコミットされていない、他のトランザクションは、それが修正ものを読むことができるようになりますことを示します。

コミット読む:他のトランザクションが、それは変更内容に読み込むことができ、トランザクションがコミットされなければならないことを示し;

反復可能読み取りは:このトランザクションに一貫性があるとあなたがデータを開いたときに表示されるデータの実行を確認するために最初から最後まで取引を示します。

直列化:関係なく、読み取りおよび書き込み操作のトランザクションがロックされていることを複数のトランザクションは、トランザクションが完了する前にするために、実行しなければならないなどの読み取りと書き込みの競合を、発生した場合、読み、追加のロックを読み、書き、書き込みロックを次のトランザクションを実行します。

以下のコードは、現在のデータベースのトランザクション分離レベルを照会することができます

mysqlの>「TRANSACTION_ISOLATION」のような変数を表示。
空集合、1つの警告(0.13秒)

MySQLのデフォルト値は空です。あなたは、パラメータトランザクション分離の開始値を設定することができ直す私はまた、あなたがするように設定トランザクション分離置くことを示唆しているAD-COMMITTED、「コミット読みを。」もちろん、どのようなレベルに固有の設定は、ビジネスに基づいてする必要があります。

トランザクション分離の原則

勝つための試みの論理的な結果にアクセスするときには、データベース内のビューを作成します。

オープンデータとトランザクションの実装を確認するために、最初から最後までのトランザクションが開始されたときに「反復可能読み取り」の分離レベルダウンでは、ビューが作成され、ビューにこれを最初から最後まで、その理由は、「トランザクションですあなたが見たときにデータが「一致しています。

「コミット読み取り」の分離レベルでは、このビューが実行される各SQL文の初めの時点で作成されます。

分離レベルダウン「コミットされていないを読んで、」直接、最新の値を取得するために作られているので、ビューの概念が存在しないことに留意すべきです。

「直列化された」分離レベルが、それが直接ロックされているため、ビューの概念を取得するので、その他の事項は、同時アクセスを持って避けていませんでした。

起動モード間のサービス

MySQLの業務は、次の方法で起動し、

1、明示的なトランザクションを開始するか、開始トランザクションの独立の使用を開始し、そこを開始または開始トランザクションを開始、コミットまたはロールバックトランザクションのロールバックを開始し提出します。

2は、また、自動的に提出するように設定自動コミット= 0を設定することができますが、ので、ここで、特急スタートが自動的に提出した場合、当然のことながら、実際に取引を開くことでなければならない前提をコミットし、自動送信オフ取引に多段階の操作を示しています開いているトランザクションを開始します。あなたは、これは非常に面倒だと思うならば、あなたはまた、自動送信を意味し、仕事とチェーンをコミットを実行し、自動的に次のトランザクションを開始することができます。

 

さて、ご質問があれば、勉強と一緒に議論することを歓迎、今日ここで停止。

おすすめ

転載: www.cnblogs.com/gusluo/p/11299169.html