この記事の内容は、Mysql トランザクション分離レベル (読み取りコミット) の内容についての紹介です。必要な方は参考にしていただければ幸いです。
Mysql トランザクション分離レベル読み取りコミット
mysql トランザクション分離レベルmysql> show variables like '%isolation%'; +---------------+----------------+ | Variable_name | Value | +---------------+----------------+ | tx_isolation | READ-COMMITTED | +---------------+----------------+ 1 row in set (0.00 sec)を表示
現在のトランザクション分離レベルが READ-COMMITTED
読み取りコミット## であることがわかります。
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)
値をクエリします
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)3 番目のステップでは、B の
が 2 に変更されますが、トランザクションはコミットされません
mysql> update `order` set number=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
mysql> commit; Query OK, 0 rows affected (0.01 sec)
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
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)
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
トランザクション分離レベルが Read Committed であることがわかります。 Bの場合、Bのトランザクションがサブミットされた後、Aがサブミットしていなくても、Bのトランザクションのサブミット結果を読み取ることができます。これにより、汚い読書
の問題が解決されます。
以上がMysql トランザクション分離レベルの内容の概要 (読み取りコミット)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。