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

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

不言
不言転載
2019-01-09 10:55:053754ブラウズ

この記事の内容は、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 までご連絡ください。