Mysql事務(wù)隔離級(jí)別之讀提交詳解
查看mysql 事務(wù)隔離級(jí)別
mysql> show variables like '%isolation%'; +---------------+----------------+ | Variable_name | Value | +---------------+----------------+ | tx_isolation | READ-COMMITTED | +---------------+----------------+ 1 row in set (0.00 sec)
可以看到當(dāng)前的事務(wù)隔離級(jí)別為 READ-COMMITTED 讀提交
下面看看當(dāng)前隔離級(jí)別下的事務(wù)隔離詳情,開啟兩個(gè)查詢終端A、B。
下面有一個(gè)order表,初始數(shù)據(jù)如下
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
第一步,在A,B中都開啟事務(wù)
mysql> start transaction; Query OK, 0 rows affected (0.00 sec)
第二步查詢兩個(gè)終端中的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,但不提交事務(wù)
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)
發(fā)現(xiàn)A中的值并沒有修改。
第五步,提交事務(wù)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)
發(fā)現(xiàn)A中的值已經(jīng)更改
第六步,提交A中的事務(wù),再次查詢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)
發(fā)現(xiàn)A,B中的值都更改為2了。
下面給一個(gè)簡單的示意圖
我們可以看到,在事務(wù)隔離級(jí)別為讀已提交 的情況下,當(dāng)B中事務(wù)提交了之后,即使A未提交也可以讀到B事務(wù)提交的結(jié)果。這樣解決了臟讀的問題。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- MySQL中Innodb的事務(wù)隔離級(jí)別和鎖的關(guān)系的講解教程
- MySQL 四種事務(wù)隔離級(jí)別詳解及對(duì)比
- MySQL四種事務(wù)隔離級(jí)別詳解
- MySQL數(shù)據(jù)庫事務(wù)隔離級(jí)別介紹(Transaction Isolation Level)
- mysql、oracle默認(rèn)事務(wù)隔離級(jí)別的說明
- 深入解析MySQL的事務(wù)隔離及其對(duì)性能產(chǎn)生的影響
- MySQL查看和修改事務(wù)隔離級(jí)別的實(shí)例講解
- 詳解MySQL中事務(wù)隔離級(jí)別的實(shí)現(xiàn)原理
- mysql事務(wù)隔離級(jí)別詳解
相關(guān)文章
30個(gè)mysql千萬級(jí)大數(shù)據(jù)SQL查詢優(yōu)化技巧詳解
本文總結(jié)了30個(gè)mysql千萬級(jí)大數(shù)據(jù)SQL查詢優(yōu)化技巧,特別適合大數(shù)據(jù)里的MYSQL使用2018-03-03mysql 5.7.20\5.7.21 免安裝版安裝配置教程
這篇文章主要為大家詳細(xì)介紹了mysql5.7.20和mysql5.7.21免安裝版安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02SQLyog錯(cuò)誤號(hào)碼2058最新解決辦法
這篇文章主要給大家介紹了關(guān)于SQLyog錯(cuò)誤號(hào)碼2058的最新解決辦法,使用sqlyog連接數(shù)據(jù)庫過程中可能會(huì)出現(xiàn)2058錯(cuò)誤,出現(xiàn)的原因是因?yàn)镸YSQL8.0對(duì)密碼的加密方式進(jìn)行了改變,需要的朋友可以參考下2023-08-08