MySQL トランザクション分離レベルの詳細

MySQL トランザクション分離レベルの詳細

serializableシリアル化(問題なし)

トランザクションは順次実行する必要があります。前のトランザクションがコミットされる前に、後続のトランザクションをコミットすることはできません。これは最も安全な方法ですが、同時操作は不可能であるため、効率が低下します。

repeatab read繰り返し読み取り (デフォルトの分離レベル) (ファントム読み取り)

トランザクションがコミットされる前は、クエリをいくつ実行しても、クエリの結果は同じになります (レコードが他のトランザクションによって変更されている場合でも) が、ファントム リードが発生する可能性があります。

コミットされたread committed (繰り返し不可能、ファントム読み取り)

現在のトランザクションでは、他のトランザクションによって送信されたデータを参照できるため、非反復読み取りが発生する可能性があります (別のスレッドがデータを送信した後、現在のスレッドはそれを参照でき、その前後で同じ SQL クエリを 2 回実行した結果が異なります (反復読み取りと比較して))。

ファントムリーディングも起こる可能性がある
ユーザー 1 は wangwu をクエリし、それが存在しないことを発見します。次に、ユーザー 2 はトランザクションを開始し、wangwu を挿入しますが、データをコミットしません。ユーザー 1 は再度クエリし、それでもそれが存在しないことを発見します。wangwu を挿入する操作は実行されますが、操作は失敗します。明らかに、wangwu は存在しないが挿入できないため、ファントム リードが発生します。

コミットされていないread uncommitted (ファントム読み取り、繰り返し不可能な読み取り、ダーティ読み取り)

  • ダーティ リード:現在のトランザクションは、他のトランザクションによってコミットされていないデータを読み取ります。他のトランザクションがロールバックされた場合、現在のトランザクションによって読み取られたデータは不正となり、ダーティ リードと呼ばれます。
  • 繰り返し不可能な読み取りが発生します。他のトランザクションによって送信された変更は現在のトランザクションによって認識されるため、クエリの結果が異なります。
  • ファントム リードが発生します。まず、ユーザー 1 がwangwuクエリしましたが、存在しません。ユーザー 2 がトランザクションを開始し、 wangwuを挿入しますが、トランザクションをコミットしません。この時点で、 user1 wangwuクエリし、それが存在することを検出します。

deletewangwu操作に失敗しました。wangwu wangwu見つかりましたが、削除できませんでした。

MySQL トランザクション分離レベルの詳細に関するこの記事はこれで終わりです。MySQL トランザクション分離レベルの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL トランザクション分離レベルとロックメカニズムの問題に関する深い理解
  • MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離
  • MySQL トランザクション分離レベルの原則例分析
  • Mysql トランザクション分離レベルの読み取りコミットの詳細な説明
  • MySQLトランザクションの4つの分離レベルについての深い理解

<<:  Vue で eslint 検出をオフにする方法 (複数の方法)

>>:  htmlダウンロード機能の詳しい説明

推薦する

MySQLコマンドプロンプトで入力エラーが発生したときに前のコマンドを修正する方法

目次現在の問題解決プロセス具体的な手順解決した事件現在の問題MySQL コマンド プロンプトに複数行...

CSS ワールド - コード実践: 画像の Alt 情報の表示

ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...

CSS の position 属性の値に関する研究 (概要)

CSS の位​​置属性は要素の配置タイプを指定し、上、下、左、右を使用して要素を具体的に配置します...

JavaScript ベースのランダム点呼システムの実装

この記事では、ランダムロールコーラーを実装するためのJavaScriptの具体的なコードを参考までに...

MySQLユーザー権限テーブルについての簡単な説明

MySQL はインストール時に自動的に mysql という名前のデータベースを作成します。mysql...

MySQL 5.7 スレーブノードからマルチスレッド マスター スレーブ レプリケーションを構成する方法の詳細な説明

序文MySQL は MySQL 5.6 からマルチスレッド レプリケーションをサポートしていますが、...

フロントエンドネットワーク、JavaScriptの最適化、開発のヒントについて簡単に説明します。

1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...

JavaScript プロトタイプの詳細

目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...

MySQL のテーブル内のレコード数を制限する方法

目次1. トリガーソリューション2. パーティションテーブルソリューション3. 一般的な表領域ソリュ...

この記事では、CSSのようなJSモジュールをインポートする方法を説明します。

目次序文構築可能なスタイルシートとは何ですか? CSSモジュールスクリプトの使用インポートアサーショ...

MySQLデータベースの圧縮バージョンのインストールと設定に関する詳細なチュートリアル

目次1. MySQLをダウンロードする2. 圧縮パッケージを解凍する3. MySQLを初期化する4....

Tomcat でのサーブレットの作成と実装に関する深い理解

1. サーブレットとは何か1.1. 正式な言葉で説明する:サーブレットは、動的な Web リソースを...

MySQL での外部キーの作成、制約、削除

序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部...

CSS ロリポップを描くサンプルコード

背景: 毎日少しずつ進歩し、少しずつ積み重ねていけば、どんどん良くなっていきますコード: <!...