說到mysql
的事物就會想到事物的特性ACID:mysql
我這裏針對mysql
的innodb
存儲引擎來講算法
mysql的隔離性其實是經過
lock
來實現的,其餘三條是經過redo
,undo
機制來實現sql
mysql中lock的類型併發
RC和RR的區別code
在默認狀況下mysql存儲引擎默認使用的是一致性非鎖定讀操做innodb
若是讀取的行正在執行DELETE、UPDATE操做,這時讀取操做不會所以等待行上鎖的釋放,而是會讀取當前行的快照版本。可是讀取快照的方式在不一樣隔離級別下方式是不同的。***RC下讀取的是行最新快照版本,RR模式下讀取的是事物開始時候的行數據版本。***所以在RC模式下會產生不可重複讀和幻讀。所以RR支持MVVC(多版本併發控制)而RC不支持MVVC。技術
鎖算法的實現數據
InnoDB對於行的查詢都是採用這種Netx-Key Lock算法。對於不一樣的SQL查詢,可能設置爲分爲共享Netx-Key Lock和排他Netx-Key Lock。查詢
參考db