mysql--數據庫併發1

mvcc

併發讀寫

實現思路基於多版本---相對應lbcc基於鎖的併發控制

多版本,讀不加鎖,併發讀寫不衝突

快照讀,讀取歷史版本,不影響其他事務寫

當前讀,讀取當前記錄最新版本,返回的當前記錄加鎖,其他事務不會併發修改這條記錄

 

快照讀,開啓事務-------------,第一條select生成一張快照,在這個事務中沿用select生成的第一張快照

只要使用同一條sql就使用快照歷史版本,直到事務結束------------

 

數據行鎖

innodb默認行鎖

 

 

悲觀鎖,樂觀鎖

保證併發共享數據更新正常

樂觀鎖不對用戶操作限制,最終對版本號判斷,版本號不相等無效操作,過多資源浪費,用戶無效操作

更新使用version判斷,cur_version = select version from table;  update table set ... where version=cur_version

update返回值0,1判斷是否更新成功,提示用戶操作成功或失敗

悲觀鎖,數據庫控制,開啓事務,按先後順序操作,前事務執行---->後續事務等待,事務等待時間長

 

 

 

 

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