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: [エラー] 不明なオプション '--skip-grant-tables'

MySQL データベースがエラー 1045 (28000): ユーザー 'ODBC'...

Vueドロップダウンリストの2つの実装方法の比較

Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...

Windows で IP アドレスを指定してサーバーへのリモート アクセスを設定する方法

当社には、外部ネットワークからの干渉を受けることが多いサーバーが多数あります。侵入者はポート 338...

Ubuntu 18.04 のインストールで「ldlinux.c32 のロードに失敗しました」というエラーが表示され、解決手順がわかりません

序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...

HTMLウェブページの基本概念の簡単な分析

ウェブページとは何ですか? HTML ドキュメントがブラウザカーネルによってレンダリングされた後に表...

MySQL の文字セット utf8 を utf8mb4 に変更する方法

MySQL 5.5 の場合、文字セットが設定されていない場合、MySQL のデフォルトの文字セットは...

コードブロックのハイライトをコピーして表示できる js プラグイン highlight.js + clipboard.js 統合

主に2つの側面から: 1. ハイライト/改行2. コードのコピーボタンこれら両方には既製のプラグイン...

MySQL (5.6 以下) の JSON 解析の詳細な例

MySQL(5.6以下)はjsonを解析します #json 解析関数 DELIMITER $$ `j...

mysql8.0 でユーザーを作成して権限を付与する際のエラーの解決方法の詳細な説明

質問1:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...

JavaScript でローカル変数をグローバル変数に変換する方法

まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...

MySQL 並列レプリケーションの簡単な分析

01 並列レプリケーションの概念MySQL のマスター スレーブ レプリケーション アーキテクチャで...

HBuilderX で Tomcat 外部サーバーを設定して、JSP インターフェイスを表示および編集する方法の詳細な説明

1. 最初の方法は、ローカルのTomcatを起動してJSPを表示することです。 tomcatのweb...

CSSラベル表示モードについて1つの記事で学ぶ

タグの種類(表示モード) HTML タグは、一般的にブロック タグとインライン タグの 2 種類に分...

Linux での MySQL 8.0.25 のインストールと設定のチュートリアル

LinuxにMySQL 8.0.25をインストールするための最新のチュートリアルを参考にしてください...

表内のコンテンツオーバーフローのレイアウト方法について

コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...