分離レベル
非コミット読み取り(コミットされていない読み取り)
この分離レベルでは、他のすべてのトランザクションはコミットされていないトランザクションの結果を見ることができます。その性能は他のレベルよりもはるかに優れているので、この分離レベルはほとんど、実際には使用されません。非コミット読み取りデータは、また、ダーティリードと呼ばれます。
コミット読み取り(コミット読み取り)
これは、(ただし、沈黙の、MySQLの)ほとんどのデータベースシステムのデフォルトの分離レベルです。それは、分離の簡単な定義を満たす:トランザクションが変更を行うために事務所に提出されているのみ見ることができます。この分離レベルはまた同じことの他のインスタンスが処理中に新しいコミットインスタンスを持っている可能性があるため、非反復可能読み取りをサポートしていますので、同じことを選択し、異なる結果を返すことがあります。
反復可能読み取り(反復可能読み取り)
これは、MySQLのデフォルトのトランザクション分離レベルは、データが読み込まれたときに、同じトランザクション複数の同時インスタンスは、それが同じデータ行を参照するようになります。しかし、理論的には、それは別の厄介な問題につながる:ファントム読み取り。マジックリーディングは、ユーザがデータ行の範囲を読み出し、範囲内の新しい行を挿入することにより、他のトランザクション場合、ユーザは、範囲データ列を読み出したとき、新たな仮想線を見つけることを意味します。マルチバージョン同時実行制御(MVCC)機構を介して問題を解決するためのInnoDBとファルコンストレージエンジン。
直列化(シリアライズ)
これは、分離の最高レベル、それによりある、力オーダートランザクションファントムを読み取る問題を解決するために、それは不可能互いに競合すること、。要するに、それは、読み取られたデータの各行に対して共有ロックを追加することです。このレベルでは、それは可能性がタイムアウトとロック競合の多くにつながります。
分離レベル | ダーティー読み取り | 非反復可能読み取り | ファントム読み取り | ロックを読みます |
---|---|---|---|---|
非コミット読み取り | √ | √ | √ | × |
コミット読みます | × | √ | √ | × |
反復可能読み取り | × | × | √ | × |
Serializableを | × | × | × | √ |