ホームページ > データベース > mysql チュートリアル > Mysql トランザクション分離レベルの内容の概要 (読み取りコミット)

Mysql トランザクション分離レベルの内容の概要 (読み取りコミット)

不言
リリース: 2019-01-09 10:55:05
転載
3821 人が閲覧しました

この記事の内容は、Mysql トランザクション分離レベル (読み取りコミット) の内容についての紹介です。必要な方は参考にしていただければ幸いです。

Mysql トランザクション分離レベル読み取りコミット

mysql トランザクション分離レベル
mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)
ログイン後にコピー
を表示

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

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

以下に

order テーブルがあり、初期データは次のとおりです

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー
最初のステップは、A と B の両方でトランザクションを開くことです
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
ログイン後にコピー
2 番目のステップ 両方の端末で
number 値をクエリします
  • A

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー
  • B

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー
3 番目のステップでは、B の
number が 2 に変更されますが、トランザクションはコミットされません
mysql> update `order` set number=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
ログイン後にコピー
4 番目のステップでは、A# の値がクエリされます##
mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー
A の値が変更されていないことがわかります。
#5 番目のステップは、トランザクション B を送信し、A の値を再度クエリすることです
#B
  • mysql> commit;
    Query OK, 0 rows affected (0.01 sec)
    ログイン後にコピー

  • A
  • mysql> select * from `order`;
    +----+--------+
    | id | number |
    +----+--------+
    | 13 |      2 |
    +----+--------+
    1 row in set (0.00 sec)
    ログイン後にコピー
    ログイン後にコピー

    A の値が変更されたことが判明しました

  • 6 番目のステップは、A でトランザクションを送信し、A と A の値をクエリすることです。またB。
#A
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from `order`;
    +----+--------+
    | id | number |
    +----+--------+
    | 13 |      2 |
    +----+--------+
    1 row in set (0.00 sec)
    ログイン後にコピー
  • B
    • mysql> select * from `order`;
      +----+--------+
      | id | number |
      +----+--------+
      | 13 |      2 |
      +----+--------+
      1 row in set (0.00 sec)
      ログイン後にコピー
      ログイン後にコピー
    • A と B が見つかりました 値2に変更されました。

      以下は簡単な図です
    • トランザクション分離レベルが Read CommittedMysql トランザクション分離レベルの内容の概要 (読み取りコミット) であることがわかります。 Bの場合、Bのトランザクションがサブミットされた後、Aがサブミットしていなくても、Bのトランザクションのサブミット結果を読み取ることができます。これにより、汚い読書

      の問題が解決されます。

      以上がMysql トランザクション分離レベルの内容の概要 (読み取りコミット)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

      関連ラベル:
      ソース:segmentfault.com
      このウェブサイトの声明
      この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
      最新の問題
      人気のチュートリアル
      詳細>
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート