樂觀鎖 vs 悲觀鎖

更新於 發佈於 閱讀時間約 2 分鐘

在介紹什麼是樂觀鎖、什麼是悲觀鎖之前,我們先來了解一下,這兩個鎖是應用在什麼地方?

資料庫

資料庫是用來處理資料的讀取與寫入,而資料庫的交易行為 (transaction) 必須符合 ACID,其中的 I 為 Isolation,指的是資料庫在對同個資料同時進行多筆交易時,必須避免產生資料的不一致。

白話的意思是,當大家在搶購五月天演唱會的門票時,其中有一萬個人同一時間點選了 A 區第 B 排的序號 5 的座位,資料庫不能讓這一萬個人全部都買到票,只能有一位幸運兒得到,也就是只能有一位使用者能成功將其資訊寫入資料庫。

為了達成這件萬中選一的情況,就必須使用到「鎖」的概念。

悲觀鎖

從字面上來想,可以很清楚的知道,這個鎖是用悲觀來看待資料的寫入。基於對事件的不信任,所採取的行為。

悲觀鎖的概念是,眾多行為裡,只有一個行為能被接受,其餘的行為必須等待前面的行為結束。

像是,學校老師在所有學生同時發問時,很難完整接收到大家的問題,為了避免這樣的狀況發生,我想老師一定會要求學生「一個一個」發問,小明問完,小美才能接著問,小美問完,小華才能繼續問,直到所有問題都問完,或是老師要下班離開了。這樣的操作就是**悲觀鎖**的概念。

在資料庫的 Isolation,就是悲觀鎖的概念,為的就是避免在眾多使用者同時對同一筆資料進行任何改動的操作(資料爭用激烈)時,導致資料或數據的不一致。

樂觀鎖

樂觀鎖就是跟悲觀鎖相反的概念,它不會對任何的 transaction 進行限制,所以通常會是在「資料爭用」狀況小、使用者們的操作對彼此的影響小的時候採用樂觀鎖。

留言
avatar-img
留言分享你的想法!
avatar-img
Mike的沙龍
1會員
13內容數
Mike的沙龍的其他內容
2022/08/13
在 Rail 的 MVC 架構中,M 是負責驗證與邏輯、以及轉譯向資料庫溝通的角色; C 是負責資料的搬運,搬往 M 或 V; V 則是負責畫面的呈現、及使用者與資料的互動,並將請求送往C,接著得到 C 送回來的資料。 form_tag form_for form_with
2022/08/13
在 Rail 的 MVC 架構中,M 是負責驗證與邏輯、以及轉譯向資料庫溝通的角色; C 是負責資料的搬運,搬往 M 或 V; V 則是負責畫面的呈現、及使用者與資料的互動,並將請求送往C,接著得到 C 送回來的資料。 form_tag form_for form_with
2022/08/12
將 Rails 環境帶入 rake 裡,讓 rake 可以使用 Rails 的元素,像是 Model: 如果沒有導入環境給 rake ,rake 就找不到 User ,就沒辦法 new 了。 終端機輸入: 透過回圈,一個指令,產生多筆資料: 更複雜的:
2022/08/12
將 Rails 環境帶入 rake 裡,讓 rake 可以使用 Rails 的元素,像是 Model: 如果沒有導入環境給 rake ,rake 就找不到 User ,就沒辦法 new 了。 終端機輸入: 透過回圈,一個指令,產生多筆資料: 更複雜的:
2022/08/01
在 Rails 裡常常可以看到 redirect_to 跟 render,但這兩者到底有什麼差異呢? Redirect_to redirect_to 後面接網址路徑,是用來轉到該網址路徑去,也就是換到一個新的頁面。 如果在 new 的頁面上 (同一條溪流,這一秒的水流跟下一秒的水流是不一樣的水流)
2022/08/01
在 Rails 裡常常可以看到 redirect_to 跟 render,但這兩者到底有什麼差異呢? Redirect_to redirect_to 後面接網址路徑,是用來轉到該網址路徑去,也就是換到一個新的頁面。 如果在 new 的頁面上 (同一條溪流,這一秒的水流跟下一秒的水流是不一樣的水流)
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
本文介紹資料庫鎖(DB lock)的基本概念、鎖的類型及其優缺點。通過對資料庫鎖的深入探討,我們可以理解如何在多用戶環境下保護資料的一致性與完整性,並瞭解排他鎖、共享鎖、意向鎖等不同類型鎖的作用。此外,文章還分析了鎖競爭、鎖等待和死鎖等可能的問題,幫助讀者更全面地掌握資料庫鎖的運作機制。
Thumbnail
本文介紹資料庫鎖(DB lock)的基本概念、鎖的類型及其優缺點。通過對資料庫鎖的深入探討,我們可以理解如何在多用戶環境下保護資料的一致性與完整性,並瞭解排他鎖、共享鎖、意向鎖等不同類型鎖的作用。此外,文章還分析了鎖競爭、鎖等待和死鎖等可能的問題,幫助讀者更全面地掌握資料庫鎖的運作機制。
Thumbnail
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
接續上一篇分享跟執行緒相關的內容包含:安全鎖(lock)、號誌(semaphore)、前景與背景執行緒介紹等等。 二、安全鎖(lock)   安全鎖目的是當多個執行緒要執行同一函式時,為了避免同時進行或是影響到變數的值,因此才會有這個機制來保護。「鎖的是區塊」而非資源哦!什麼意思?來看看就
Thumbnail
接續上一篇分享跟執行緒相關的內容包含:安全鎖(lock)、號誌(semaphore)、前景與背景執行緒介紹等等。 二、安全鎖(lock)   安全鎖目的是當多個執行緒要執行同一函式時,為了避免同時進行或是影響到變數的值,因此才會有這個機制來保護。「鎖的是區塊」而非資源哦!什麼意思?來看看就
Thumbnail
不查不知道,一查嚇一跳,足足七種之多,分別是超鍵 (Super key)、候選鍵 (Candidate key)、主鍵 (Primary key)、替代鍵 (Alternative key)、複合鍵 (Composite key)、唯一鍵 (Unique key) 和外鍵 (Foreign key)
Thumbnail
不查不知道,一查嚇一跳,足足七種之多,分別是超鍵 (Super key)、候選鍵 (Candidate key)、主鍵 (Primary key)、替代鍵 (Alternative key)、複合鍵 (Composite key)、唯一鍵 (Unique key) 和外鍵 (Foreign key)
Thumbnail
情境 M小姐有一份報表,報表上使用了「交叉分析篩選器」,可以方便分享給其他人進行查詢,但是又害怕別人變動了資料內容,於是她想到,可以把工作表進行「保護」,但.....沒想到工作表一保護,要讓大家使用的「交叉分析篩選器」卻無法使用了,這該怎麼辦呢?
Thumbnail
情境 M小姐有一份報表,報表上使用了「交叉分析篩選器」,可以方便分享給其他人進行查詢,但是又害怕別人變動了資料內容,於是她想到,可以把工作表進行「保護」,但.....沒想到工作表一保護,要讓大家使用的「交叉分析篩選器」卻無法使用了,這該怎麼辦呢?
Thumbnail
使用了很多軟體,其實最可怕的就是變成囤積魔人。蒐藏了很多,但是真正要用使不上力。該如何是好? 把知識分類、拆碎。比較能夠看到原子化的單一子概念,有點像淘金客淘金的感覺。 具
Thumbnail
使用了很多軟體,其實最可怕的就是變成囤積魔人。蒐藏了很多,但是真正要用使不上力。該如何是好? 把知識分類、拆碎。比較能夠看到原子化的單一子概念,有點像淘金客淘金的感覺。 具
Thumbnail
練習日期:2022/10/26 組合輸出媒介的詞語法練習法: 大家知道輸出媒介是甚麼嗎? 輸出媒介就像是書還有部落格和活動,簡單來說就是 你傳達知識或是資訊和想法的載體或是平台, 就是要靠這個載體來表達就對了。 如果叫我們從頭發想一個東西很耗腦力也很煩躁,所以直接用輸出媒介結合其他東西做發想並做延伸
Thumbnail
練習日期:2022/10/26 組合輸出媒介的詞語法練習法: 大家知道輸出媒介是甚麼嗎? 輸出媒介就像是書還有部落格和活動,簡單來說就是 你傳達知識或是資訊和想法的載體或是平台, 就是要靠這個載體來表達就對了。 如果叫我們從頭發想一個東西很耗腦力也很煩躁,所以直接用輸出媒介結合其他東西做發想並做延伸
Thumbnail
「框架效應」旨在探索與創造我們看世界的「眼鏡」。 每個人都帶著各自不同的眼鏡看著這個世界,舉凡所有的人、事、物,只要一經這副眼鏡,就會被賦予不同的意義。更重要的是,每個人時不時的還會「被」換上別副眼鏡看外界而不自知!其實,我們都隨身帶著好幾副眼鏡,隨著不同的情境而換上不同的眼鏡,進而看到不一樣的風景
Thumbnail
「框架效應」旨在探索與創造我們看世界的「眼鏡」。 每個人都帶著各自不同的眼鏡看著這個世界,舉凡所有的人、事、物,只要一經這副眼鏡,就會被賦予不同的意義。更重要的是,每個人時不時的還會「被」換上別副眼鏡看外界而不自知!其實,我們都隨身帶著好幾副眼鏡,隨著不同的情境而換上不同的眼鏡,進而看到不一樣的風景
Thumbnail
曲博有先回顧前面系列他談到區塊鏈可以等同存摺鏈,也就是一種資料結構,只是為了安全性,我們把它搞得又臭又長,眾人來維護且沒有人可以佔比達51%以上,那麼,這樣的去中心化、不可竄改的方式,我們可以信任吧
Thumbnail
曲博有先回顧前面系列他談到區塊鏈可以等同存摺鏈,也就是一種資料結構,只是為了安全性,我們把它搞得又臭又長,眾人來維護且沒有人可以佔比達51%以上,那麼,這樣的去中心化、不可竄改的方式,我們可以信任吧
Thumbnail
《鎖腦行銷》這本書是來自中國的商業心理作家程志良所寫,透過心理學與腦科學當中的人類決策模式,整理出由淺入深的三個認知階段,告訴行銷人們可以如何運用相關知識來達成更有效的行銷。
Thumbnail
《鎖腦行銷》這本書是來自中國的商業心理作家程志良所寫,透過心理學與腦科學當中的人類決策模式,整理出由淺入深的三個認知階段,告訴行銷人們可以如何運用相關知識來達成更有效的行銷。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News