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 配列の書き方の説明

推薦する

あなたのウェブサイトはIE8に適していますか?

オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...

Linux クラウド サーバー上に SFTP サーバーとイメージ サーバーを構築する方法

まず、SFTP プロトコルと FTP プロトコルの違いを理解してください。ここでは詳細には触れません...

Centos7のシステム言語を簡体字中国語に変更する方法

例示するシステムを自分でインストールする場合は、通常、システム言語をカスタマイズできます。ただし、ク...

よく使われる HTML 形式のタグ_Powernode Java Academy

1. タイトルHTML では、<h1></h1> から <h6>...

CentOS 7 パスワードを忘れた場合の解決プロセス図

必要Windows システムでも Linux システムでも、さまざまな理由でパスワードを忘れてしまう...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

JS の FileReader を介して .txt ファイルの内容を取得する方法

目次JSはFileReaderを通じて.txtファイルの内容を取得します。 .txtファイルの読み取...

MySQL の暗黙的な型変換によって発生するインデックス障害の解決策

目次質問再生暗黙的な変換要約する参照する質問仕事中、1 つの SQL クエリ ステートメントのみを実...

Linux での MySQL 5.1 および 5.7 のインストール チュートリアル

以下のコンテンツのオペレーティング システムは次のとおりです: Centos 6.7 yum で M...

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

この記事では、MySQL 5.7.21 のインストールと設定方法を記録し、皆様と共有します。 1. ...

CSSプリコンパイル言語とその違いの詳細な説明

1. 何ですか マークアップ言語として、CSSは比較的シンプルな構文とユーザーに対する要件が低いが、...

円形/扇形メニューを2分で実装する方法を教えます(基本バージョン)

序文このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからな...

MySQL の int(n) の後の n はどういう意味ですか?

int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません...

React のグローバル状態管理の 3 つの基本メカニズムの調査

目次序文小道具コンテクスト州要約する序文最新のフロントエンド フレームワークはすべて、コンポーネント...

ボタンと入力タイプの違いと注意点

<button> タグ<br />定義と使用法<button> ...