mysql解決不可重複讀取的方法:採用了mvcc多版本並發控制,mvcc是利用在每條資料後面加了隱藏的兩列,即創建版本號和刪除版本號,每個事務在開始的時候都會有一個遞增的版本號碼。
【相關學習推薦:#mysql學習】
#mysql解決不可重複讀取的方法:
mysql中,預設的交易隔離等級是可重複讀取(repeatable-read),為了解決不可重複讀,innodb採用了mvcc(多版本並發控制)來解決這個問題。
mvcc是利用在每個資料後面加了隱藏的兩列(建立版本號和刪除版本號),每個交易在開始的時候都會有一個遞增的版本號
新增:
insert into user (id,name,age)values(1,"张三",10);
更新:
update user set age = 11 where id = 1;
更新操作採用delete add的方式來實現,首先將目前資料標誌為刪除
然後新增一條新的資料:
## 刪除:刪除操作是直接將資料的刪除版本號更新為目前交易的版本號delete from user where id = 1;#查詢操作:
select * from user where id = 1;查詢操作為了避免查詢到舊數據或已經被其他事務更改過的數據,需要滿足如下條件:1、查詢時當前事務的版本號需要大於或等於創建版本號2、查詢時目前交易的版本號碼需要小於刪除的版本號碼即:create_version 這樣就可以避免查詢到其他交易修改的資料
以上是mysql怎麼解決不可重複讀的詳細內容。更多資訊請關注PHP中文網其他相關文章!