鎖機制是在處理高併發的狀況下,保證數據的完整性、一致性, INNODB 鎖的粒度是行級鎖,具體的鎖各類數據庫各類引擎可能採用各自不一樣的方式,沒必要拘泥於具體的某種方式, 用到什麼數據庫 瞭解就好了。數據庫
2. 鎖的類型 併發
共享鎖(S):兼容S鎖, 容許讀 高併發
排他鎖(X):容許一個事務更新或者刪除 事務
3. 數據的一致性 it
3.0隔離級別 table
Serializable (串行化):可避免髒讀、不可重複讀、幻讀的發生。 date
read Repeatable (可重複讀):可避免髒讀、不可重複讀的發生。select
Read committed (讀已提交):可避免髒讀的發生。next
Read uncommitted (讀未提交):最低級別,任何狀況都沒法保證。 數據
3.1 一致性非所定讀
INNODB 採用MVCC的方式來讀取當前執行時間數據庫中數據行的數據,若是的讀取的行正在執行delete或update操做,這樣不會等待鎖的釋放, 相反的,INNODB會讀取數據行的快照, 在事務的隔離級別爲READ COMMITTED 和 REPEATABLE READ 下, Innodb採用非鎖定一致性讀。在不一樣的隔離級別下, 讀取快照的的方式可不一樣, 在提交讀中,讀取最新的快照,在 重複讀的級別下, 對於快照老是讀取事務開始時的版本。
3.2 一致性鎖定讀
在用戶顯示的指定讀操做是鎖定時: select ... from table_name for UPDATE; select ... from table_name lock in share mode; 3.3 自增加鎖
3.3 鎖粒度
行級鎖(record lock)
間隙鎖(gap lock)
後健鎖(next-key lock = record lock + gap lock)