資料庫系列 - 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
2會員
15內容數
test
留言0
查看全部
發表第一個留言支持創作者!
林柏宇的沙龍 的其他內容
本文介紹資料庫正規化的概念與重要性,及其三個主要階段:第一正規化(1NF)、第二正規化(2NF)和第三正規化(3NF)。透過消除重複資料及確保欄位間的關聯性,正規化能夠顯著提升資料庫的管理便捷性與效能。使用不同情境例子幫助讀者瞭解在不同情境下正規化的必要性及其應用。適合所有希望優化資料庫設計的讀者。
本文探討資料庫中的索引及其關鍵概念,涵蓋何謂索引、其類型與設立原因、索引失效情況及 B-tree 與 B+ tree 的差異,並簡要區分主鍵與外鍵的功能。瞭解索引的運作有助於提升資料查詢效率,並正確選擇適當的索引策略,以確保資料庫的高效運行。
本文介紹關聯式資料庫與非關聯式資料庫的基本概念,闡述兩者的差異及各自的應用場景。文章進一步分析了 MySQL 的兩種主要儲存引擎:MyISAM與InnoDB,並探討了它們的優缺點及使用情境,幫助讀者瞭解選擇適合的資料庫引擎所需考量的因素。
本文分享了在面試演算法工程師時經常會遇到的問題及解題方法,包括複雜度分析、五大演算法的介紹、排序方法及動態規劃等。希望這些資訊能幫助求職者在面試時有更好的準備、提高自信,並提供參考資料以便深入學習相關內容。
本文介紹正規表達式的基本概念和常用符號,幫助讀者瞭解如何使用正規表達式來有效搜尋資料和程式碼。在數位時代,正規表達式成為了數據處理和程式開發中不可或缺的工具。透過示範和範例,讀者可以快速掌握正規表達式的基本語法,並應用於實際場景。
本文將介紹 RESTful API 的基本概念、特性及其在現代 Web 開發中的重要性。探討 REST 的設計理念,包括無狀態性、資源格式和 API 接口的最佳實踐,幫助工程師瞭解如何進行有效的 API 設計。
本文介紹資料庫正規化的概念與重要性,及其三個主要階段:第一正規化(1NF)、第二正規化(2NF)和第三正規化(3NF)。透過消除重複資料及確保欄位間的關聯性,正規化能夠顯著提升資料庫的管理便捷性與效能。使用不同情境例子幫助讀者瞭解在不同情境下正規化的必要性及其應用。適合所有希望優化資料庫設計的讀者。
本文探討資料庫中的索引及其關鍵概念,涵蓋何謂索引、其類型與設立原因、索引失效情況及 B-tree 與 B+ tree 的差異,並簡要區分主鍵與外鍵的功能。瞭解索引的運作有助於提升資料查詢效率,並正確選擇適當的索引策略,以確保資料庫的高效運行。
本文介紹關聯式資料庫與非關聯式資料庫的基本概念,闡述兩者的差異及各自的應用場景。文章進一步分析了 MySQL 的兩種主要儲存引擎:MyISAM與InnoDB,並探討了它們的優缺點及使用情境,幫助讀者瞭解選擇適合的資料庫引擎所需考量的因素。
本文分享了在面試演算法工程師時經常會遇到的問題及解題方法,包括複雜度分析、五大演算法的介紹、排序方法及動態規劃等。希望這些資訊能幫助求職者在面試時有更好的準備、提高自信,並提供參考資料以便深入學習相關內容。
本文介紹正規表達式的基本概念和常用符號,幫助讀者瞭解如何使用正規表達式來有效搜尋資料和程式碼。在數位時代,正規表達式成為了數據處理和程式開發中不可或缺的工具。透過示範和範例,讀者可以快速掌握正規表達式的基本語法,並應用於實際場景。
本文將介紹 RESTful API 的基本概念、特性及其在現代 Web 開發中的重要性。探討 REST 的設計理念,包括無狀態性、資源格式和 API 接口的最佳實踐,幫助工程師瞭解如何進行有效的 API 設計。
你可能也想看
Google News 追蹤
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、優質公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
和匱乏比起來,我們較難因應豐盛。凡事順遂的時候要嚴守紀律,在心理上拋去身外之物十分困難,但這正是一個人最需要紀律的時候。 建立一個系統,其中不管誰倒下去,都不會拖累其他人,持續不斷的失敗,有助於保存整個系統。 為了穩定而設法取得穩定,在經濟和外交上是一種冤大頭遊戲。(銀行大到不能倒的地位,詐
在今日數位化的世界中,保護資料的安全性尤為重要。加密憑證(SSL/TLS Certificates)扮演著確保網站和用戶之間資料傳輸安全的重要角色。本文將深入探討加密憑證的原理、作用以及如何選擇適合的加密憑證來保護您的網站。 1. 加密憑證的基本概念 加密憑證是一種數位檔案,用於證明網站身份的真
在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、優質公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
和匱乏比起來,我們較難因應豐盛。凡事順遂的時候要嚴守紀律,在心理上拋去身外之物十分困難,但這正是一個人最需要紀律的時候。 建立一個系統,其中不管誰倒下去,都不會拖累其他人,持續不斷的失敗,有助於保存整個系統。 為了穩定而設法取得穩定,在經濟和外交上是一種冤大頭遊戲。(銀行大到不能倒的地位,詐
在今日數位化的世界中,保護資料的安全性尤為重要。加密憑證(SSL/TLS Certificates)扮演著確保網站和用戶之間資料傳輸安全的重要角色。本文將深入探討加密憑證的原理、作用以及如何選擇適合的加密憑證來保護您的網站。 1. 加密憑證的基本概念 加密憑證是一種數位檔案,用於證明網站身份的真
在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。