アイソレーション特性とMySQLデータベーストランザクションの4つのレベル

A. 4つの特徴は

トランザクションの1概念

トランザクション(トランザクション)は一連の動作を指し、動作シーケンス行うかしないのいずれかを操作する複数の作業の不可分単位、データベース環境論理演算部、DBMSによってトランザクションであります管理サブシステムは、業務を処理するための責任があります。

現在のストレージエンジンInnoDBは(MySQL5.5後のデフォルトのストレージエンジン)とMyISAMテーブルが使用されている(デフォルトはMySQL5.5のストレージエンジンの前)のInnoDBトランザクション処理機構をサポートし、MyISAMテーブルはサポートしていません。

トランザクションの2特性

指向のリソース - トランザクション処理はトランザクションない限り、シーケンス内のすべての操作が正常に完了、または永続的にデータを更新していないことを保証します。すべて成功するか、すべて失敗し、エラー回復を簡素化し、アプリケーションを作ることができるのいずれかのシーケンスに関連する操作のセットの組み合わせによって、より信頼性の高いです。

トランザクションは、トランザクションの原子(原子性)、一貫性(一貫性)、アイソレーション(分離)と永続性(耐久性)が満たされなければならない一連の操作であることをので、しかし、一連の操作のすべては、トランザクションと呼ばれることができません。4つのプロパティは、ACID特性と呼ばれます。

 

 

1.原子性:

原子が本質的に最小の粒子であり、分割できない特性を有します。アトミックトランザクションのアプリケーションは、その最小限のロジックの実行を細分化されていないとして、トランザクションのすべての操作を見ることができます。

すべての実行または全部を実行していないのいずれか、操作の順序を変更するトランザクションデータを使用してください。一般的には、トランザクションの動作は、共通の目標を持っており、相互に依存しています。データベース・システムにのみこれらの操作の一部を実行する場合は、業務の全体的な目的を損なう、とだけ操作の一部を扱う、原子システムの可能性を排除します。

 

2.一貫性:

一貫性は、別の一貫性のある状態変数に整合性のある状態でなければならないデータベースからのトランザクションの実行の結果を指します。データベースが正常にコミットされたトランザクションの結果のみが含まれている場合、データベースは一貫性のある状態になっています。一貫性は、原子によって確保されています。

例:転送を行う場合は、専用トランザクションを構成するためにロールアウトとお金の一貫した転送を確保します。それは起こったとトランザクションが発生する前に、合計のデータがまだ一致しています。

 

3.単離:

アイソレーションが実行される各トランザクション干渉を指し、任意のトランザクションの他の同時トランザクションの内部動作は、単離されます。言い換えれば、同時実行のトランザクション間の状態の途中で互いを見ることができないどちらも、お互いに影響を与えることができません。

例:転送を行う場合、操作はアカウントの量だけでなく、Bアカウントの量の増加を軽減するために実施された後、AとBが成功を見に考慮に判明した場合にのみ占めます。転送操作のためのトランザクションのいずれかの効果を生み出すことができず、その他の事項。

 

4.持久性:

持続性は、データベースに障害が発生した場合でも、提出されたデータを回復することができるはず、一度、通常の物理的なデータベースに保存された永久メモリに記録しなければならないデータに対して行われた変更を、提出されたトランザクションを指します。データベースは、外部要因に起因する障害が発生した場合でも、ハードディスクが破損しているような、そして以前に提出されたデータが失われる可能性があります。

 

II。トランザクション分離レベル

同時実行の問題の情勢

ダーティリード(ダーティー読み取り)

:トランザクションがデータにアクセスされ、データが変更されており、この変更はデータベースに提出されていない場合は、その後、別のトランザクションにもこのデータにアクセスし、このデータを使用しています。このデータが提出されていないので、このデータを読んで、他のトランザクションは、あなたが「ダーティデータ」何をしたかに基づいて、「ダーティデータ」とは、ある正しくない可能性があります。

非反復可能読み取り(Unrepeatableread):

これは、同じデータを複数回読んで取引を指します。この取引が終わっていない場合は、他のトランザクションは、データにアクセスします。2が原因2番目のトランザクションの変更に、最初のトランザクションでデータを読み取る最初のトランザクションデータにつながっ間ので、同じ二度ではない読み取ることができます。これは、データがそれほど非反復可能読み取りと呼ばれ、同じような状況ではありません読みトランザクション以内に2回起きました。

マジック読書(ファントムリード):

マジックリーディングとまたとないは等を読み出し。データの一部に挿入された別の同時トランザクション(T2)、続いて複数のデータラインを、読み取られるトランザクション(T1)で起こります。次のクエリでは、最初のトランザクション(T1)は、同じようにファントム読み取りと呼ばれる、幻覚が起こったかのように、いくつかのオリジナルのレコードは、存在しないよりも多くを見つけるでしょう。

非再現性と区別ファントムを読みます:

非反復可能読み取りのフォーカスが変更され、新たな焦点は、読み取りまたは削除ファントムです。

ラインだけの条件を満たすようにロック非反復可能読み取りの問題を解決するため、ファントムを解決する必要がロックテーブルを読みます

例1(同じ条件では、あなたがデータを読み取るために持っていた、再び読み出された値が同じではありません発見):賃金の問題における1ミスターA読み取り1000の動作のために、まだ完全ではありません、Bさんの業務で2 2000年の賃金に変更、2000年の給与に彼らの賃金を読むための結果、これは非反復可能読み取りです。

例2(同样的条件, 第1次和第2次读出来的记录数不一样 ):假某工资单表中工资大于3000的有4人,事务1读取了所有工资大于3000的人,共查到4条记录,这时事务2 又插入了一条工资大于3000的记录,事务1再次读取时查到的记录就变为了5条,这样就导致了幻读

事务的隔离级别

事务的隔离级别用于决定如何控制并发用户读写数据的操作。数据库是允许多用户并发访问的,如果多个用户同时开启事务并对同一数据进行读写操作的话,有可能会出现脏读、不可重复读和幻读问题,所以MySQL中提供了四种隔离级别来解决上述问题。

事务的隔离级别从低到高依次为 READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ以及SERIALIZABLE,隔离级别越低,越能支持高并发的数据库操作。

 

2.在spring注解开发中,使用 isolation 表示事务的隔离级别

 

おすすめ

転載: www.cnblogs.com/arsn/p/11301043.html