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

推薦する

vue-cropper を使用して vue で写真をトリミングする方法をご存知ですか?

目次1. インストール: 2. 使用方法: 3. 組み込みメソッド: 4. 使用方法:要約する公式サ...

Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

背景同社のサーバーはすべて Alibaba Cloud ECS ホストを購入しています。デフォルトの...

Vue の element-ui コンポーネントのデフォルトの CSS スタイルを変更する 4 つの方法

目次序文1. グローバル統合オーバーライドを使用する2. .vueファイルを変更する3. コンポーネ...

列名を知らなくてもMySQLインジェクションを詳細に解説

序文最近、穴を掘ってスペースを作っているだけなので、心が空っぽになっているように感じます。テクノロジ...

HTML 描画ユーザー登録ページ

この記事では、HTML描画ユーザー登録ページの具体的な実装コードを参考までに共有します。具体的な内容...

CSSで記事の区切り線のスタイルを実装するさまざまな方法のまとめ

この記事では、CSS で記事の区切り線を実装するさまざまな方法をまとめています。区切り線はページを美...

HTMLフォームのいくつかの送信方法の概要

最も一般的で、最もよく使用され、最も一般的な方法は、submit タイプを使用することです。コードを...

vue v-for ループ オブジェクトの属性

目次1. ループオブジェクト内の値2. ループオブジェクト3. キーと値のループ1. ループオブジェ...

MySQL トリガーの基本的な使い方(作成、表示、削除など)の詳細な説明

目次1. MySQLトリガーの作成: 1. MySQLトリガー作成構文: 2. MySQL作成構文の...

vue3.0 sfcのセットアップの変更について簡単に説明します。

目次序文標準的なSFCの書き方スクリプト設定可変露出部品の取り付け小道具カスタムイベント要約する序文...

MySQL テーブルスペースとは何ですか?

今日皆さんにお伝えしたいトピックは、「皆さんがよく話題にするテーブル スペースとは一体何でしょうか。...

Centos7環境でYUMを構築する方法

1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...

MySQLの始め方から諦め方まで徹底解説 - インストール

学ぶ内容1. ソフトウェアのインストールとサーバーの設定。 2. (オプションですが、強くお勧めしま...

CSS でのフレックスレイアウトの詳細な説明

フレックス レイアウトは、エラスティック レイアウトとも呼ばれます。任意のコンテナーをフレックス レ...

MySQL をインストールするときに初期パスワードを忘れた場合のシンプルで効果的な解決策

MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...