SQLSERVER 資料庫引擎中的鎖定

2021-06-28 03:28:05 字數 1324 閱讀 4285

sql server 2008 r2

其他版本

1(共 1)對本文的評價是有幫助 - 

評價此主題

鎖定是 microsoft sql server 資料庫引擎用來同步多個使用者同時對同乙個資料塊的訪問的一種機制。

在事務獲取資料塊當前狀態的依賴關係(比如通過讀取或修改資料)之前,它必須保護自己不受其他事務對同一資料進行修改的影響。 事務通過請求鎖定資料塊來達到此目的。 鎖有多種模式,如共享或獨佔。 鎖模式定義了事務對資料所擁有的依賴關係級別。 如果某個事務已獲得特定資料的鎖,則其他事務不能獲得會與該鎖模式發生衝突的鎖。 如果事務請求的鎖模式與已授予同一資料的鎖發生衝突,則資料庫引擎例項將暫停事務請求直到第乙個鎖釋放。

當事務修改某個資料塊時,它將持有保護所做修改的鎖直到事務結束。 事務持有(所獲取的用來保護讀取操作的)鎖的時間長度,取決於事務隔離級別設定。 乙個事務持有的所有鎖都在事務完成(無論是提交還是回滾)時釋放。

應用程式一般不直接請求鎖。 鎖由資料庫引擎的乙個部件(稱為「鎖管理器」)在內部管理。 當資料庫引擎例項處理 transact-sql 語句時,資料庫引擎查詢處理器會決定將要訪問哪些資源。 查詢處理器根據訪問型別和事務隔離級別設定來確定保護每一資源所需的鎖的型別。 然後,查詢處理器將向鎖管理器請求適當的鎖。 如果與其他事務所持有的鎖不會發生衝突,鎖管理器將授予該鎖。

下表列出的主題介紹了鎖定的主要概念。

主題說明

鎖粒度和層次結構

可以請求各種型別的資源(例如,行、頁、索引、表或資料庫)的鎖。 某些操作需要在多個粒度級別放置鎖,以形成鎖的層次結構。

鎖模式

鎖有多種模式,這些模式指定其他事務對鎖定資源所具有的訪問級別。

鎖相容性(資料庫引擎)

如果多個事務的鎖模式相容,則這些事務可以獲得對同一資源的併發鎖。 如果某事務請求的鎖模式與現有鎖衝突,將暫停該事務直到第乙個鎖被釋放。

鍵範圍鎖定

鎖定某個範圍內的鍵,使事務可以執行在可序列化隔離級別,防止假插入和假刪除。

鎖公升級(資料庫引擎)

如果乙個事務獲取了大量的行鎖或頁鎖,則資料庫引擎可能授予它乙個表鎖,然後釋放所有較低階別的鎖,以將鎖定開銷降到最小。

動態鎖定

資料庫引擎可以根據優化器估計的 transact-sql 語句可能引用的行數,動態地選擇鎖粒度級別。

顯示鎖定資訊(資料庫引擎)

資料庫引擎及其相關聯的 api 提供了若干機制,用以顯示某例項或資料庫當前持有的鎖的相關資訊。死鎖

如果兩個任務因均擁有乙個對方所需資源的鎖而永久互相鎖定,就會發生死鎖。

概念事務(資料庫引擎)

其他資源

管理併發資料訪問

Sql Server 資料庫引擎實用儲存過程

在實際的開發和運用過程中,有時可能會需要了解資料庫的一些具體情況,這個時候呼叫系統的儲存過程就會顯得很方便,下面就把一些實用 常用的資料庫引擎的儲存過程和大家分享一下。1 sp helpdb 這個儲存過程主要用來了解伺服器上資料庫的個數 以及使用者建立資訊等,執行後效果如圖 如果這時想繼續了解資料庫...

mysql資料庫引擎 mysql資料庫引擎

資料庫引擎是用於儲存 處理和保護資料的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務,從而滿足企業內大多數需要處理大量資料的應用程式的要求。使用資料庫引擎建立用於聯機事務處理或聯機分析處理資料的關聯式資料庫。這包括建立用於儲存資料的表和用於檢視 管理和保護資料安全的資料庫物件 如索引 檢視和...

資料庫引擎

用了好久的mysql資料庫,都不知道引擎的具體知識,被面試官虐殘了,希望對大家有幫助 資料庫引擎 1.innodbacid 原子特性 1 提供了行級鎖和外來鍵約束,設計目標是處理大容量資料庫系統,它本身其實就是基於mysql後台的完整資料庫,提供了對資料庫acid的支援,並實現了sql標準的四種事務...