亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Repeatable-Read及Read-Committed有哪些區別

發布時間:2021-11-06 09:02:48 來源:億速云 閱讀:260 作者:小新 欄目:MySQL數據庫

這篇文章主要為大家展示了“Repeatable-Read及Read-Committed有哪些區別”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Repeatable-Read及Read-Committed有哪些區別”這篇文章吧。

mysql 默認提供的是 Repeatable-Read 可重復讀,更適用于oltp
Read-Committed 不可重復讀 也可以叫做提交讀
在MySQL中基本有這兩種事務隔離級別的設置,默認的RR(Repeatable-Read)和實際中常見的RC(Read-Committed)。兩者區別是什么,怎么正確理解,用幾個SQL語句就能說明白,就用簡單的實驗來說明白。

   我們開始吧。    

   首先創建一個測試表test,插入一些數據。

create table test( id int primary key,name varchar(30),memo varchar(30));
insert into test values(1,'name1','aaaa'),(2,'name2','aaaa'),(3,'name3','aaaa'),(4,'name4','aaaa'),(5,'name5','aaaa');     很多情況下,我們會把隔離級別從默認的RR修改為RC,這也是其它很多數據庫默認的事務隔離級別。

我們打開兩個窗口,來對比關聯測試。


RC模式下的測試

1

窗口1

>show variables like 'tx_isolation';   
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.01 sec)

>begin;  --開啟事務 
>select *from test;  --查看數據
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | name2 | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)

2

窗口2

begin;  --開啟事務
>update test set name='aaaaa' where id=2;  --修改一條記錄
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0
>commit;  --提交事務
Query OK, 0 rows affected (0.01 sec)

1

窗口1

>select *from test;   --查看窗口1中的數據,就會發現原來窗口的數據發生了變化,這是不可重復讀的一個典型例子。
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | aaaaa | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)

RR模式下的測試

再來看看RR這個隔離級別,其實有了上面的測試,就相對有底了。這是MySQL默認的隔離級別,會出現幻讀的情況。

1

窗口1

首先修改隔離級別從RC到RR

>set global transaction isolation level repeatable read; 
Query OK, 0 rows affected (0.00 sec)
?查看事務隔離級別。
>show variables like 'tx_isolation';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| tx_isolation  | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)

>begin;   --開啟事務
>select *from test;   --查看表test的數據。
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | aaaaa | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)

2

窗口2

>begin;  --開啟事務
>update test set name='RR_test';  --修改表test的數據,所有記錄都發生變化。
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5  Changed: 5  Warnings: 0
>commit;  --提交事務
Query OK, 0 rows affected (0.00 sec)

1

窗口1


>select *from test;  --在RR模式下,窗口1中的事務因為還沒有提交,看到的還是原來的數據。
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | aaaaa | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)
>commit;  --我們提交窗口1的事務
Query OK, 0 rows affected (0.00 sec)
>select *from test;  --再次查看數據就發生了變化,實際上窗口1中沒有任何的DMl操作。
+----+---------+------+
| id | name    | memo |
+----+---------+------+
|  1 | RR_test | aaaa |
|  2 | RR_test | aaaa |
|  3 | RR_test | aaaa |
|  4 | RR_test | aaaa |
|  5 | RR_test | aaaa |
+----+---------+------+
5 rows in set (0.00 sec)

以上是“Repeatable-Read及Read-Committed有哪些區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江油市| 阿坝县| 高安市| 晋城| 绥滨县| 贵阳市| 温泉县| 东丽区| 特克斯县| 尤溪县| 五原县| 梅河口市| 阿克苏市| 永仁县| 耒阳市| 五华县| 商水县| 文水县| 阿克苏市| 崇阳县| 库车县| 砚山县| 达拉特旗| 甘肃省| 大悟县| 长阳| 成安县| 常熟市| 南漳县| 临沧市| 长武县| 乌鲁木齐县| 平潭县| 封丘县| 江孜县| 固原市| 越西县| 九龙县| 罗定市| 文登市| 赞皇县|