閱讀筆記-mysql 併發控制思路

參考:https://mp.weixin.qq.com/s/R3yuitWpHHGWxsUcE0qIRQ

併發控制

  • 常見的併發控制手段有:鎖、數據多版本

  • 普通鎖:操作數據前鎖定數據,操作完釋放,保持一致性

    • 但是簡單鎖太粗暴,讀也無法並行
  • 共享鎖:s鎖,讀取數據時使用。共享鎖之間不互斥,可以讀讀並行

  • 排他鎖:x鎖,修改數據時添加。寫讀、寫寫不能並行。類似於:寫事務沒有提交,讀相關數據的select也會被阻塞

    • 如果想在寫人物完成前讀人物依然能執行,則可以使用數據多版本

數據多版本

  • 在寫任務發生時複製一份,版本號區分,操作複製出來的這份。其他的讀可以繼續讀以前的數據(類似於java中CopyOnWriteArraySet)
    在這裏插入圖片描述

總結

  • 整個演進過程:從單鎖的讀寫阻塞,到共享鎖和排他鎖的讀讀並行,最後到多版本的讀寫並行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章