樂觀鎖與悲觀鎖

2022-07-11 03:51:10 字數 301 閱讀 7102

資料庫中某個欄位的某個值,程式執行時需要修改它(寫操作),多個執行緒併發對其寫操作又會出現髒讀、幻讀等問題;因此要併發控制;

1.某欄位某個值小a,這個小a在乙個屋裡,關著門,門上上著鎖;

2.門鑰匙有且只有一把(鑰匙個數沒必要兩把甚至更多),在鑰匙池中;

併發控制機制:

執行緒a來修改小a -> 到鑰匙池中拿鑰匙 -> 鑰匙池沒有鑰匙則等待 -> 鑰匙池中有鑰匙 -> 拿起鑰匙 -> 開門 -> 修改小a -> 修改小a結束之後 -> 將鑰匙放回鑰匙池

存在多個執行緒競爭乙個鑰匙的情況:

樂觀鎖悲觀鎖:

悲觀鎖與樂觀鎖

悲觀鎖與樂觀鎖 悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗 了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次一 個事務讀取某一條記錄後,就會把這條記...

樂觀鎖與悲觀鎖

悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次乙個事務讀取某一條記錄後,就會把這條記錄鎖住,這樣 其它的...

樂觀鎖與悲觀鎖

鎖 locking 這個概念在我們學習多執行緒的時候曾經接觸過,其實這裡的鎖和多執行緒裡面處理併發的鎖是乙個道理,都是暴力的把資源歸為自己所有。這裡我們用到鎖的目的就是通過一些機制來保證一些資料在某個操作過程中不會被外界修改,這樣的機制,在這裡,也就是所謂的 鎖 即給我們選定的目標資料上鎖,使其無法...