Mysql トランザクション分離レベルの読み取りコミットの詳細な説明

Mysql トランザクション分離レベルの読み取りコミットの詳細な説明

MySQL トランザクション分離レベルを表示する

mysql> '%isolation%' のような変数を表示します。
+---------------+----------------+
| 変数名 | 値 |
+---------------+----------------+
| tx_isolation | READ-COMMITTED |
+---------------+----------------+
セット内の 1 行 (0.00 秒)

現在のトランザクション分離レベルがREAD-COMMITTEDであることがわかります。

現在の分離レベルでのトランザクション分離の詳細を確認し、2 つのクエリ ターミナル A と B を開いてみましょう。

以下に注文表があります。初期データは次のとおりです。

mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 1 |
+----+--------+
セット内の 1 行 (0.00 秒)

最初のステップは、A と B の両方でトランザクションを開始することです。

mysql> トランザクションを開始します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

2番目のステップは、2つの端末の数値を照会することです


 mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 1 |
+----+--------+
セット内の 1 行 (0.00 秒)

B

 mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 1 |
+----+--------+
セット内の 1 行 (0.00 秒)

3番目のステップは、Bの数字を2に変更しますが、トランザクションをコミットしません。

mysql> `order` を更新し、number=2 を設定します。
クエリは正常、1 行が影響を受けました (0.00 秒)
一致した行: 1 変更された行: 1 警告: 0

ステップ4: Aの値を照会する

mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 1 |
+----+--------+
セット内の 1 行 (0.00 秒)

A の値は変更されていないことがわかります。

ステップ5: トランザクションBを送信し、Aの値を再度照会する

B

mysql> コミット;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)


mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 2 |
+----+--------+
セット内の 1 行 (0.00 秒)

Aの値が変わったことが分かります

ステップ 6. A でトランザクションをコミットし、A と B の値を再度照会します。


mysql> コミット;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 2 |
+----+--------+
セット内の 1 行 (0.00 秒)

B

mysql> `order` から * を選択します。
+----+--------+
| ID | 番号 |
+----+--------+
| 13 | 2 |
+----+--------+
セット内の 1 行 (0.00 秒)

AとBの値が2に変更されていることがわかります。

ここに簡単な概略図があります


トランザクション分離レベルが Read Committed の場合、B のトランザクションがコミットされた後、A がコミットされていなくても、B トランザクションのコミットの結果を読み取ることができることがわかります。これにより、ダーティ リードの問題が解決されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  CentOS 8 Zabbix 4.4 インストール ガイド

>>:  Vue の foreach 配列と js の traversal 配列の書き方の説明

推薦する

Dockerは指定されたメモリで操作を実行します

次のように: -m, --memory メモリ制限。形式は数値と単位です。単位は b、k、m、g の...

nginx proxy_cache キャッシュ設定の詳細な説明

序文:私は仕事柄、オンラインライブストリーミングの分野に携わっており、ビデオの再生やダウンロードには...

ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

a および href 属性 HTML では、英語ではアンカーと呼ばれるハイパーリンクを表すために &...

Centos7 で keepalived ログを別のパスに設定する方法の詳細な説明

Keepalived のインストール: cd <keepalived_sourcecode_p...

4つのReactコンポーネントにおけるDOMスタイル設定の詳細な説明

1. インラインスタイル仮想DOMにインラインスタイルを追加するには、式を使用してスタイルオブジェク...

CentOS8 yum/dnfで国内ソースを設定する方法

CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...

CSSボックスの表示/非表示とトップレイヤーの実装コード

.imgbox{ 幅: 1200ピクセル; 高さ: 612px; 右マージン: 自動; 左マージン...

mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

コアコード /*-------------------------------- 2つ以上のフィール...

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

MySQL でシンプルな検索エンジンを実装するためのサンプルコード

目次序文導入ngram全文パーサー全文インデックスを作成する検索方法1. 自然言語検索(自然言語モー...

JavaScript におけるシリアル操作と並列操作

目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを 2 回忘れてしまいましたか?最初、私はアンインストールして再インストールす...

Vue SPA ファースト スクリーン最適化ソリューション

目次序文最適化ソ連オンデマンドインポート1. ルーティングファイルでコンポーネントをオンデマンドでイ...

Dockerはコンテナに入るためにnsenterツールを使用する

Dockerコンテナを使用する場合は、nsenterツールを使用する方が便利です。システムにない場合...

MySQL マルチインスタンス構成のアプリケーションシナリオ

目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...