首頁  >  文章  >  資料庫  >  mysql怎麼解決不可重複讀

mysql怎麼解決不可重複讀

coldplay.xixi
coldplay.xixi原創
2020-09-02 13:50:198767瀏覽

mysql解決不可重複讀取的方法:採用了mvcc多版本並發控制,mvcc是利用在每條資料後面加了隱藏的兩列,即創建版本號和刪除版本號,每個事務在開始的時候都會有一個遞增的版本號碼。

mysql怎麼解決不可重複讀

【相關學習推薦:#mysql學習

#mysql解決不可重複讀取的方法:

mysql中,預設的交易隔離等級是可重複讀取(repeatable-read),為了解決不可重複讀,innodb採用了mvcc(多版本並發控制)來解決這個問題。

mvcc是利用在每個資料後面加了隱藏的兩列(建立版本號和刪除版本號),每個交易在開始的時候都會有一個遞增的版本號

新增:

insert into user (id,name,age)values(1,"张三",10);

mysql怎麼解決不可重複讀

 

更新:

update user set age = 11 where id = 1;

更新操作採用delete add的方式來實現,首先將目前資料標誌為刪除

mysql怎麼解決不可重複讀

 

然後新增一條新的資料:

mysql怎麼解決不可重複讀

## 

刪除:刪除操作是直接將資料的刪除版本號更新為目前交易的版本號

delete from user where id = 1;

mysql怎麼解決不可重複讀

#查詢操作:

select * from user where id = 1;

查詢操作為了避免查詢到舊數據或已經被其他事務更改過的數據,需要滿足如下條件:

1、查詢時當前事務的版本號需要大於或等於創建版本號

2、查詢時目前交易的版本號碼需要小於刪除的版本號碼

即:create_version 這樣就可以避免查詢到其他交易修改的資料

以上是mysql怎麼解決不可重複讀的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn