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

推薦する

Alibaba Cloud Centos7.X で外部にポートを開く方法

一言で言えば、大手メーカーからクラウド サーバーを購入する場合は、セキュリティ グループに移動して、...

よく使用される入力テキストボックスの内容は自動的に垂直方向に中央揃えされ、クリックするとデフォルトのプロンプトテキストは空になります。

3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...

MySQL エラー コード 1862 の解決方法: パスワードの有効期限が切れています

ブロガーは 1 ~ 2 か月間 MySQL を使用していませんでしたが、今日この問題に遭遇しました。...

DockerコンテナのIPアドレスを取得する方法の詳細な説明

1.コンテナに入った後 /etc/hosts を cat するコンテナ自体の IP アドレスと (-...

Vueプラグインの実装で発生した問題の概要

目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...

Docker コマンドラインの完全ガイド (知っておくべき 18 のこと)

序文Docker イメージは Dockerfile といくつかの必要な依存関係で構成され、Docke...

Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

序文Web アプリケーションでは、トラフィックを節約し、転送データのサイズを縮小し、転送効率を向上さ...

JavaScript での実行コンテキストと実行スタックの例の説明

JavaScript - 原則シリーズ日常の開発では、既存のプロジェクトを引き継ぐときは常に、まず他...

JavaScript でオブジェクトをトラバースする 5 つの方法 サンプルコード

目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...

ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...

Docker基盤技術の適用に関する詳細な説明 名前空間Cgroup

Docker の基盤技術: Docker の基盤となる 2 つのコア テクノロジーは、名前空間とコ...

UIエンジニアのキャリアについての私たちの考え

私は長い間落ち込んでいます、なぜでしょうか?以前、お客様から、提供されたソフトウェアが正常に動作しな...

Centos7 MySQL データベースのインストールと設定のチュートリアル

1. システム環境yum updateアップグレード後のシステムバージョンは[root@yl-web...

MySQL データベースのアップグレードにおけるいくつかの「落とし穴」

商用データベースの場合、データベースのアップグレードは優先度が高く、バージョンアップのロードマップ、...