Mysql事務以及加鎖機制
事務的特徵ACID,即原子性、一致性、隔離性、永續性。
原子性保證一個事務為一個最小的單元,內部不可分割;
一致性保證事務中的每個操作執行緒不可單獨提交,成功則一起提交,不成功則事務回滾;
隔離性保證不同事務間看到的資料檢視相互獨立,相互隔離(隔離級別可設定);
永續性保證事務提交後資料會持久的儲存下來;
sql規範定義的事務的隔離級別:
1.READ UNCOMMITTED(讀取未提交內容)
所有事務可以看到未提交事務的執行結果,本隔離級別很少用到實際應用中,讀取未提交的資料,又稱為“髒讀”。
2.READ COMMITTED(讀取提交內容)
大多數資料庫的預設隔離級別是此級別,但不是mysql預設的。一個事務在開始的時候只能看見已提交事務所做的改變。一個事務從開始到提交前所做的任何改變都是不可見的,除非提交。這種隔離級別也稱為不可重複讀。
3.REPEATABLE READ(可重複讀)
鎖定查詢中使用的所有資料以防止其他使用者更新資料,但是其他使用者可以將新的幻像行插入資料集,且幻像行包括在當前事務的後續讀取中。此級別也稱為“幻讀”。
4.SERIALIZABLE(可序列化)
可序列化是最高的隔離級別,它通過強制事務排序,使之不可重讀,解決了幻讀的問題。此隔離級別會在每個讀的資料行上加共享鎖,使用這種隔離級別會產生大量的超時現象,一般實際開發中不會用到。
mysql加鎖機制 :
根據型別可分為共享鎖(SHARED LOCK)和排他鎖(EXCLUSIVE LOCK)或者叫讀鎖(READ LOCK)和寫鎖(WRITE LOCK)。
根據粒度劃分又分表鎖和行鎖。表鎖由資料庫伺服器實現,行鎖由儲存引擎實現。
mysql提供了3種事務型儲存引擎,InnDB、NDB Cluster和Falcon。
一個事務執行的任何過程中都可以獲得鎖,但是隻有事務提交或回滾的時候才釋放這些鎖。這些都是隱式鎖定,也可以顯式鎖定,InnoDB支援顯式鎖定,例如:
SELECT .... LOCK IN SHARE MODE (加共享鎖)
SELECT .....FOR UPDATE(加排他鎖)
多版本併發控制(重要):
Mysql的事務儲存引擎不是簡單實用行加鎖機制,而是叫多版本併發控制(MVCC)技術,和行加鎖機制關聯實用。以便應對更高的併發,當然是以消耗效能作為代價。
每種儲存引擎對MVCC的實現方式不同,InnoDB引擎的簡單實現方式如下:
InnoDB通過為每個資料航增加兩個隱含值的方式來實現。這兩個隱含值記錄了行的建立時間,以及過期時間。每一行儲存事件發生時的系統版本號。每一次開始一個新事務時版本號會自動加1,每個事務都會儲存開始時的版本號,每個查詢根據事務的版本號來查詢結果。
相關文章
- mysql 事務,鎖,隔離機制MySql
- mysql事務處理與鎖機制MySql
- MySQL中的事務原理和鎖機制MySql
- Mysql事務隔離級別與鎖機制MySql
- MySQL 事務機制MySql
- redis(10)事務和鎖機制Redis
- 詳解Mysql事務隔離級別與鎖機制MySql
- InnoDB 事務加鎖分析
- InnoDB事務鎖之行鎖-insert加鎖-隱式鎖加鎖原理
- InnoDB事務鎖之行鎖-聚集索引加鎖流程索引
- Mysql鎖機制MySql
- mysql鎖機制總結,以及優化建議MySql優化
- MySQL 事務和鎖MySql
- MySQL事務與鎖MySql
- MySQL事務和鎖MySql
- SQL鎖機制和事務隔離級別SQL
- 鎖機制到加鎖的必要性
- InnoDB事務鎖之行鎖-delete流程update階段加鎖delete
- Mysql鎖機制分析MySql
- mysql的鎖機制MySql
- MySQL 筆記 - 事務&鎖MySql筆記
- mysql之鎖與事務MySql
- MySQL詳解--鎖,事務MySql
- mysql事務和鎖InnoDBMySql
- MySQL的事務機制和鎖(InnoDB引擎、MVCC多版本併發控制技術)MySqlMVC
- 深入理解Mysql事務隔離級別與鎖機制問題RLOGMySql
- 【MySQL】MySQL中的鎖機制MySql
- InnoDB事務鎖之行鎖-insert加鎖原理圖-聚集索引索引
- MS SQL Server資料庫事務鎖機制分析(轉)SQLServer資料庫
- Mysql各種鎖機制MySql
- mysql myisam的鎖機制MySql
- mysql鎖機制總結MySql
- MySQL鎖機制與MVCCMySqlMVC
- 鎖機制優化MySQL優化MySql
- MySQL入門--事務與鎖MySql
- mysql鎖與事務總結MySql
- InnoDB事務鎖之行鎖-insert二級索引加鎖原理圖索引
- MySQL優化系列(八)--鎖機制超詳細解析(鎖分類、事務併發、引擎併發控制)MySql優化