ホームページ >データベース >mysql チュートリアル >トランザクションの 4 つの分離レベルとは何ですか?

トランザクションの 4 つの分離レベルとは何ですか?

王林
王林オリジナル
2020-07-01 14:52:3715036ブラウズ

トランザクションの 4 つの分離レベルは次のとおりです: 1. コミットされていないコンテンツの読み取り (Read Uncommitted)、2. 送信されたコンテンツの読み取り (Read Committed)、3. 反復可能な読み取り (Repeatable Read)、4. シリアル化可能。

トランザクションの 4 つの分離レベルとは何ですか?

トランザクションの 4 つの分離レベル:

(推奨学習: mysql チュートリアル)

1. コミットされていない読み取り -- コミットされていないコンテンツの読み取り

  • ##トランザクションはコミットされていないコンテンツを表示できます

  • ダーティ リーディングの問題頻繁に発生します (ダーティ読み取り: 他のトランザクションのコミットされていない (実行された) コンテンツの読み取り)

2 つのトランザクション A と B をオープン (A 、B トランザクションクロス) トランザクションを開始

Aトランザクションはデータ テーブル内のコンテンツのみをクエリします。B トランザクションは追加、削除、および変更操作を実行しますが、コミット (送信) は行いません。

A トランザクションは引き続きテーブル内のデータをクエリできます。 変更 (コミットされていないコンテンツのクエリ - ダーティ) reading)

2. コミットされた読み取り -- 送信されたコンテンツを読み取ります

  • 1 つのトランザクションのみ送信されたコンテンツを表示する機能

  • ## 多くの場合、反復不可能な読み取りの問題 (反復不可能な読み取り: 同じトランザクションで同じ選択ステートメントを実行して異なる結果を取得する) が発生します。
  • 2 つのトランザクション A とオープン同じデータ テーブルの B (A と B トランザクションが交差) starttransaction

A トランザクションはデータ テーブルの内容をクエリするだけで、B トランザクションは追加、削除、および変更操作を実行しますが、コミット (送信) はしません

トランザクション クエリはテーブル内のデータ変更の内容を見つけることができません

B トランザクションの送信

A によって見つかったデータ変更 (A は 2 回クエリを実行し、結果は異なります -反復不可読み取り)

3. 反復可能読み取り -- 再読み取り可能

    同じトランザクションの複数のインスタンスが同時にデータを読み取る場合、同じ結果が得られます。
  • MySQL のデフォルトのトランザクション分離レベル
  • は、ファントム読み取りの問題 (ファントム読み取り: 複数回読み取ると異なる結果) (ファントム行)) を引き起こすことがよくあります。
  • 同じデータ テーブルに対して 2 つのトランザクション A と B を開きます (A と B のトランザクションが交差します) トランザクションの開始

A トランザクションはデータ テーブルの内容のみをクエリし、トランザクション B は実行します追加、削除、および変更操作は実行されますが、コミットはされません

トランザクション クエリがテーブル内のデータ変更の内容を見つけることができません

B トランザクションの送信

A トランザクション クエリの内容テーブル内のデータ変更の一部が見つかりません

#A は送信します

A はテーブル内のデータの変更をクエリできます

4. シリアル化可能 -- シリアル化可能

#最高の分離レベル

  • 共有ロックをトランザクションに追加します。同時に実行できるトランザクション操作は 1 つだけです。ファントム読み取り問題を解決する時間

  • 大量のタイムアウトとロック競合の問題が発生します

  • ##オープン トランザクション A

    トランザクション B が開かれている場合、この操作は追加または削除できません

以上がトランザクションの 4 つの分離レベルとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。