SQL SERVER的鎖機制(二)——概述(鎖的相容性與可以鎖定資源)接上SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍)SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍)中的

來源:互聯網
上載者:User
接上SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍)

 

 

 

二、完整的鎖相容性矩陣(見)

 

 對的是代碼說明:見。

 

三、下表列出了資料庫引擎可以鎖定資源。

名稱

資源

縮寫

編碼

呈現鎖定時,描述該資源的方式

說明

資料行

RID

RID

9

檔案編號:分頁編號:Slot編號

用於鎖定堆中的單個行的行標識符。

索引鍵

KEY

KEY

7

6位元組雜湊值

索引中用於保護可序列化事務中的鍵範圍的行鎖。

分頁

PAGE

PAG

6

檔案編號:分頁編號

資料庫中的 8 KB 頁,例如資料頁或索引頁。

範圍

EXTENT

EXT

8

檔案編號:範圍的第一個分頁的編號

一組連續的八頁,例如資料頁或索引頁。

 

HoBT

     

堆或 B 樹。 用於保護沒有叢集索引的表中的 B 樹(索引)或堆資料頁的鎖。

資料表

TABLE

TAB

5

資料表ID(OBJID欄位)

包括所有資料和索引的整個表。

檔案

FILE

FIL

3

檔案編號

資料庫檔案。

應用程式

APPLICATION

APP

10

6位元組雜湊值

應用程式專用的資源。

 

METADATA

     

中繼資料鎖。

 

ALLOCATION_UNIT

     

配置單位。

資料庫

DATABASE

DB

2

資料庫代碼(DBID欄位)

整個資料庫。

索引

 

IDX

4

Db_id:object_id:index_id相關的其他資源

索引中的資料行鎖定,

 

 

 

 

四、SQL SERVER要鎖定資源時,預設是從最底級開始鎖起,例如,索引索引值,資料行,以避免大範圍鎖定,以避免影響其他人同時訪問該範圍內的其他資料,但是當記憶體不足時,SQL SERVER會自動擴大鎖定範圍以減低管理鎖定的負荷。下面我們來看一個樣本。

 

--建立SP_LOCK輸出緩衝表if exists( select * from tempdb..sysobjects where name like '#temp%' and type ='u')begindrop table #tempcreate table #temp(spid int,dbid int ,objid int,indid int,type varchar(3),resource varchar(20),mode varchar(20),status varchar(5))endbegin tranupdate WBK_PDE_head set [COP_EMS_NO]='abcde' where wbook_no='BE404942850177'insert #temp exec sp_lock @@spidcommit tran -----擷取dbid--select DB_ID('Test')--只查看定製的資料庫的相關資源,sql 2008select spid,資料庫=DB_NAME(dbid),對象=OBJECT_NAME(objid),索引=(select name from sysindexes where ID=OBJID and indid=t.indid ),TYPE,resource,mode,status from #temp t where dbid=28order by dbid,objid,indid------以SQL 2005的sys.indexes表查詢相關資料 select spid,資料庫=DB_NAME(dbid),對象=OBJECT_NAME(objid),索引=(select name from sys.indexes where object_id=OBJID and index_id=t.indid ),TYPE,resource,mode,status from #temp t where dbid=28order by dbid,objid,indid

 

說明:

1.建立暫存資料表#Temp用以儲存系統預存程序sp_lock輸出的資料

2.開啟事務,然後更新資料(update),但不去確認事務,資料庫會鎖定相關對象,將sp_lock所呈現的相關資料插入到#Temp表中,並將結果查詢出來。

 

在查詢分析器中執行以下代碼

 

select a.*,b.name from #temp a left join sysobjects b on a.objid=b.id order by a.type

 

圖如下示:

 

 

另外的樣本可以參見SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍)中的“範例程式碼二”相內容。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.