MySQL資料庫事務各隔離級別加鎖情況--Repeatable Rea
上節回顧
上兩篇記錄了我對MySQL 事務 隔離級別 、MySQL 事務隔離級別 的理解。
這篇記錄我對 Repeatable Read 的理解。
前言
MySQL在 read committed ,Repeatable Read 兩個級別下都會使用到MVCC, 並且只在這兩個級別下使用。
目錄
1.單純加鎖是怎麼實現 Repeatable Read 的?
2.真實的情況是什麼樣子的?
1.單純加鎖是怎麼實現 Repeatable Read 的
1.多執行緒同時更新同一條記錄,加X鎖。所以併發場景下的 update 是序列執行的。
2.工業定義上的 select 一條記錄,這個時候會在記錄上加讀共享鎖(S鎖),併到事務結束,因為在這種情況下才能實現記錄在事務時間跨度上的可重複讀。在讀的時候不允許其他事務修改這條記錄。
3.update 一條語句,這個時候會在記錄上加行級排他鎖(X鎖),併到事務結束,這中場景下,其他讀事務會被阻塞。
2.真實的情況是什麼樣子的?
讀不影響寫,寫不影響讀。
1.讀不影響寫:事務以排他鎖的形式修改原始資料,讀時不加鎖,因為 MySQL 在事務隔離級別Read committed 、Repeatable Read下,InnoDB 儲存引擎採用非鎖定性一致讀--即讀取不佔用和等待表上的鎖。即採用的是MVCC中一致性非鎖定讀模式。因讀時不加鎖,所以不會阻塞其他事物在相同記錄上加 X鎖來更改這行記錄。
2.寫不影響讀:事務以排他鎖的形式修改原始資料,當讀取的行正在執行 delete 或者 update 操作,這時讀取操作不會因此去等待行上鎖的釋放。相反地,InnoDB 儲存引擎會去讀取行的一個快照資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2798577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL資料庫事務各隔離級別加鎖情況--read uncommittMySql資料庫MIT
- MySQL資料庫引擎、事務隔離級別、鎖MySql資料庫
- 如何理解mysql 的事務隔離級別 repeatable readMySql
- mysql事務隔離級別和鎖MySql
- Mysql鎖與事務隔離級別MySql
- 資料庫事務併發問題----各種事務隔離下的情況資料庫
- 資料庫事務與隔離級別資料庫
- Mysql事務隔離級別與鎖機制MySql
- 資料庫事務與事務的隔離級別資料庫
- MySQL事務隔離級別MySql
- MySQL 事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- 聊聊資料庫的事務隔離級別資料庫
- MySQL事務的隔離級別MySql
- 理解MySQL事務隔離級別MySql
- MySQL的事務隔離級別MySql
- [資料庫]事務的4種隔離級別資料庫
- 詳解Mysql事務隔離級別與鎖機制MySql
- 論 MySQL 之事務隔離級別 | 資料庫篇MySql資料庫
- Mysql資料庫的隔離級別MySql資料庫
- 資料庫系列:事務的4種隔離級別資料庫
- CYmysql事務隔離級別詳情dbzMySql
- MySQL事務隔離級別和MVCCMySqlMVC
- 理解mysql的事務隔離級別MySql
- 啥是 MySQL 事務隔離級別?MySql
- mysql如何修改事務隔離級別MySql
- Mysql 四種事務隔離級別MySql
- 事務隔離(二):基於加鎖方式的事務隔離原理
- MySQL 的四種事務隔離級別MySql
- MySQL 事務隔離級別實現原理MySql
- MySQL 事務的隔離級別初窺MySql
- 成為MySQL DBA後,再看ORACLE資料庫(十、事務與隔離級別)MySqlOracle資料庫
- MySQL InnoDB中的事務隔離級別和鎖的關係MySql
- 資料庫事務的四大特性以及事務的隔離級別資料庫
- mysql 事務,鎖,隔離機制MySql
- 資料庫隔離級別資料庫
- 資料庫事務的隔離級別及四大特性資料庫
- 資料庫事務的四大特性和隔離級別資料庫