資料庫系列 - 4: DB Lock

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

這一周我們來介紹一個稍微簡單的概念—資料庫鎖(DB lock)。

介紹 & 概念

試想一下,當你和其他人同時對一張資料表進行操作時,要怎麼讓資料庫知道要保留誰的儲存?特別是當操作涉及到同一筆資料時,如何確保資料的一致性和完整性?此時最直觀的方式就是起來!當一個人正在對資料表進行修改時,資料庫會對該資料表或該筆資料加鎖,直到該用戶的操作完成並釋放鎖,而其他人在這段時間內不能對該資料進行修改。當第一個人完成操作並釋放鎖後,下一個用戶才能獲得鎖並進行操作。這樣便可以防止資料競爭和不一致的情況發生。

因此我們可以很簡單的理解到,DB lock 的本質就是防止多個請求同時對同一張表進行訪問,無論是讀取還是寫入。通過適當的鎖定機制,資料庫可以確保資料的完整性和一致性,並提高系統的穩定性和可靠性。

鎖的類型

  • 排他鎖(Exclusive Lock): 又稱為「寫鎖」,其他請求無法讀取或寫入。
  • 共享鎖(Shared Lock): 又稱為「讀鎖」,其他請求可以讀取、無法寫入。
  • 意向鎖(Intention Lock): 用來協調不同層次的鎖。
  • 自動鎖(Implicit Lock): 由資料庫系統自動管理,通常會自動獲得和釋放。
  • 顯式鎖(Explicit Lock): 由請求或應用程式顯式請求和釋放,通常使用SQL語句(如 LOCK TABLE)來操作。
  • 行鎖定(Row Lock):這是一種細粒度的鎖定,用於鎖定資料表中的特定行,因此可以提高併發時的性能。
  • 表鎖定(Table Lock):這是一種粗粒度的鎖定,用於鎖定整個資料表,會降低併發時的性能。

鎖的優點

優點應該很明顯,就是我前面有提到的保持數據一致性與完整性~

鎖的缺點之一 — 鎖競爭

鎖競爭是指當多個請求同時嘗試訪問相同資源時,因為鎖的存在而出現的資源競爭現象。這種情況會導致等待操作被延遲,進而影響整體的執行效率。

造成鎖競爭的原因主要有以下四種:

  • 高併發:當系統同時接收大量請求時,會導致處理能力不足,從而引發鎖競爭。大量請求需要爭奪有限的鎖資源,導致等待時間增加。
  • 不當的鎖粒度:如果鎖的粒度過大,例如在只需要修改單條資料的情況下使用了表鎖而非行級鎖,就會造成不必要的競爭。合適的鎖粒度應該根據實際需求來選擇,以最小化鎖的範圍。
  • 長時間持有鎖:某些操作可能需要較長時間來完成,這會長時間佔據鎖資源。長時間持有鎖會導致其他請求的等待時間增加,甚至可能引發死鎖。
  • 不必要的鎖:有些操作實際上不需要加鎖。例如,某些讀取操作可能不會改變數據狀態,此時加鎖可能會引起不必要的鎖競爭。

鎖的缺點之二 — 鎖等待與死鎖

所謂的鎖等待,就是在一個請求持有某個鎖時,若它需要另一個鎖,則會進入等待狀態,直到該鎖被釋放。而所謂的死鎖,就是指兩個或多個請求互相握有對方所需要的鎖,導致每個請求都無法進一步執行,最終使得整個系統處於卡住的狀態。

舉例來說,假設有兩個請求:

  • 請求A:正在處理資料表A,擁有A鎖,待會需要處理資料表B。
  • 請求B:正在處理資料表B,擁有B鎖,待會需要處理資料表A。

在這種情況下,請求A需要等待請求B釋放資料表B的鎖,而請求B則需要等待請求A釋放資料表A的鎖。因為兩個請求都在等待對方釋放鎖,導致彼此無法繼續進行下去,形成了死鎖。

需要特別注意的是,死鎖不僅僅是由兩個請求引起的,它也可能涉及三個或更多的請求,每個請求都持有其他請求所需的鎖。這種情況下,整個系統可能會陷入更複雜的死鎖狀態。

希望閱讀完這篇文章的你可以對資料庫所有更深的了解喔~

參考資料

  1. https://www.mysql.tw/2023/05/mysql-lock.html#google_vignette
留言
avatar-img
留言分享你的想法!
avatar-img
林柏宇的沙龍
2會員
43內容數
test
林柏宇的沙龍的其他內容
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
和匱乏比起來,我們較難因應豐盛。凡事順遂的時候要嚴守紀律,在心理上拋去身外之物十分困難,但這正是一個人最需要紀律的時候。 建立一個系統,其中不管誰倒下去,都不會拖累其他人,持續不斷的失敗,有助於保存整個系統。 為了穩定而設法取得穩定,在經濟和外交上是一種冤大頭遊戲。(銀行大到不能倒的地位,詐
Thumbnail
和匱乏比起來,我們較難因應豐盛。凡事順遂的時候要嚴守紀律,在心理上拋去身外之物十分困難,但這正是一個人最需要紀律的時候。 建立一個系統,其中不管誰倒下去,都不會拖累其他人,持續不斷的失敗,有助於保存整個系統。 為了穩定而設法取得穩定,在經濟和外交上是一種冤大頭遊戲。(銀行大到不能倒的地位,詐
Thumbnail
自從通訊軟體的發達,測試封鎖也變成熱門討論的一環,這個是給已知封鎖的狀態下測驗喔!
Thumbnail
自從通訊軟體的發達,測試封鎖也變成熱門討論的一環,這個是給已知封鎖的狀態下測驗喔!
Thumbnail
為什麼要登出使用者? 安全性:防止未經授權的人,在使用者暫離時使用系統,這在公用或共享電腦的環境中尤其重要。 資料保護:只要使用者處於登入狀態,就會暴露在個人資料被他人操縱或利用的風險中,因此登出閒置使用者對資安也很重要。 如何在 Vue 3 專案中實作此功能?
Thumbnail
為什麼要登出使用者? 安全性:防止未經授權的人,在使用者暫離時使用系統,這在公用或共享電腦的環境中尤其重要。 資料保護:只要使用者處於登入狀態,就會暴露在個人資料被他人操縱或利用的風險中,因此登出閒置使用者對資安也很重要。 如何在 Vue 3 專案中實作此功能?
Thumbnail
每日自動檢查資料庫運作所產生的訊息,若發現有錯誤,自動寄出警告信給擔當人員
Thumbnail
每日自動檢查資料庫運作所產生的訊息,若發現有錯誤,自動寄出警告信給擔當人員
Thumbnail
雜湊、編碼和加密雖然在資訊安全中扮演不同的角色,但很多人往往容易搞混它們的用途,本篇文章將帶你了解他們的區別。
Thumbnail
雜湊、編碼和加密雖然在資訊安全中扮演不同的角色,但很多人往往容易搞混它們的用途,本篇文章將帶你了解他們的區別。
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
隨着網絡攻擊和資料外洩的種類越來越多,防御方案的部署也要與時並進。近年,很多企業開始留意和測試部署使用者和實體行為分析(UEBA)的可行性。 在資訊保安工作上,內部人員被駭或者內部人員出現錯誤的行為導致企業暴露於風險之中......
Thumbnail
隨着網絡攻擊和資料外洩的種類越來越多,防御方案的部署也要與時並進。近年,很多企業開始留意和測試部署使用者和實體行為分析(UEBA)的可行性。 在資訊保安工作上,內部人員被駭或者內部人員出現錯誤的行為導致企業暴露於風險之中......
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News