MySQL讀書筆記--鎖

MySQL InnoDB 存在的鎖由如下幾種

共享鎖(S):允許事務讀一行數據
排他鎖(X):允許事務刪除或者更新一行數據

InnoDB支持多粒度鎖定,這種鎖允許事務在行級上的鎖和表級上的鎖同時存在。爲支持在不同粒度上進行加鎖操作。InnoDB存儲引擎還是支持一種額外的鎖方式,稱之爲意向鎖

意向共享鎖(IS): 事務想要獲得一張表種某某幾行的共享鎖
意向排它鎖(IX): 事務想要獲取一張表中某幾行的排它鎖

一致性非鎖定讀:https://blog.csdn.net/H_L_S/article/details/89735330

一致性鎖定讀:
SELECT ... FOR UPDATE (X鎖)
SELECT ... LOCK IN SHARE MODE (S鎖)

自增長與鎖:
在Innodb存儲引擎的內存結構中,每個含有自增長值的表都有一個自增長計數器。插入操作會依據這個自增長的計數器值加1賦予自增長列。這個實現方式稱作AUTO-INC Locking。這種鎖採用一種特殊的表鎖機制,爲了提高性能,鎖不是在一個事務完成後才釋放,而是在完成對自增值插入SQL語句之後立即釋放
對於有自增長值的列的併發插入性能較差,事務必須等待前一個插入完成(雖然不用等待事務的完成),其次對於INSERT --SELECT 的大數據的插入會影響插入性能,因爲另一個事務中的插入會阻塞

死鎖:指兩個或者兩個以上的事務在執行過程中,因爭奪資源而造成的一種相互等待的現象。解決死鎖問題最簡單的方式是不要有等待,將任何的等待都轉化爲滾回,並且事務重新開始
解決死鎖的最簡單的方法是超時

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章