首頁 >資料庫 >mysql教程 >Mysql事務隔離等級內容的介紹(讀取提交)

Mysql事務隔離等級內容的介紹(讀取提交)

不言
不言轉載
2019-01-09 10:55:053809瀏覽

這篇文章帶給大家的內容是關於Mysql事務隔離等級內容的介紹(讀提交),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Mysql交易隔離等級之讀提交

查看mysql 交易隔離等級
mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)

可以看到目前的交易隔離等級為READ-COMMITTED 讀取提交

下面看看目前隔離等級下的交易隔離詳情,開啟兩個查詢終端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)
第二步查詢兩個終端機中的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)
第三步驟將B中的
number修改為2,但不提交交易
mysql> update `order` set number=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
第四步驟查詢A中的值
mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
發現A中的值並沒有修改。
第五步,提交交易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中的值已經改變
第六步,提交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了。
下面給一個簡單的示意圖

Mysql事務隔離等級內容的介紹(讀取提交)

#我們可以看到,在交易隔離層級為
讀取已提交 的情況下,當B中事務提交了之後,即使A未提交也可以讀到B事務提交的結果。這樣解決了髒讀的問題。

#

以上是Mysql事務隔離等級內容的介紹(讀取提交)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除