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ダウンロード機能の詳しい説明

推薦する

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...

Linuxコマンドをバックグラウンドで実行する方法

通常、ターミナルでコマンドを実行する場合、別のコマンドの入力を開始する前に、現在のコマンドが終了する...

Linux の非常に詳細な gcc アップグレード プロセス

目次序文1. 現在のgccバージョン2. gccをインストールする3.gmpのインストール4.MPF...

mysqlはタイムゾーン関連の問題を解決します

序文: MySQL を使用すると、時間の表示が正しくない、タイムゾーンが GMT+8 ゾーンにない、...

HTML チュートリアル、簡単に学べる HTML 言語 (2)

*******************HTML言語入門(パート2)*****************...

Ubuntuが仮想マシンでインターネットに接続できない問題の解決策

インターネットに接続できない仮想マシンをセットアップするのは非常に面倒です。ここでは、Ubuntu ...

ローカルで起動したときに Vue プロジェクトがクッキーを保持できない問題を解決する

vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...

IIS7~IIS8.5 サーバープロトコルヘッダーの削除または変更

要件: IIS 7、7.5、8.0、8.5、および ASP.NET で HTTP 応答ヘッダーを削除...

UTF8 でエンコードされた Web ページにファイルが含まれている場合の、ページの前の空白行の解決方法

<br />このページはUTF8エンコードを使用しており、ヘッダーとフッターはテンプレー...

MySQL で浮動小数点データを文字データに変換するときに起こりうる問題の詳細な説明

序文この記事は主に、MySQL で浮動小数点型を文字型に変換するときに発生する問題を紹介します。これ...

MySQLは複数テーブル関連統計(サブクエリ統計)の例を実装します

この記事では、例を使用して、MySQL で複数テーブルの関連統計を実装する方法について説明します。ご...

マウスで画像を動かすJavaScript

この記事では、マウスの動きに追従する画像を実現するためのJavaScriptの具体的なコードを参考ま...

Vue プロジェクトで mock を使用する方法をご存知ですか?

目次最初のステップ: 2 番目のステップは、request.js で関連する構成を行うことです。re...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...

nginx.pid を開く際の失敗と無効の解決策

目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...