日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)

發布時間:2025/4/14 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?

二、完整的鎖兼容性矩陣(見下圖)

?

?對上圖的是代碼說明:見下圖。

?

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

名稱

資源

縮寫

編碼

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

說明

數據行

RID

RID

9

文件編號:分頁編號:Slot編號

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

索引鍵

KEY

KEY

7

6字節哈希值

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

分頁

PAGE

PAG

6

文件編號:分頁編號

數據庫中的?8?KB?頁,例如數據頁或索引頁。

范圍

EXTENT

EXT

8

文件編號:范圍的第一個分頁的編號

一組連續的八頁,例如數據頁或索引頁。

?

HoBT

???

堆或?B?樹。?用于保護沒有聚集索引的表中的?B?樹(索引)或堆數據頁的鎖。

數據表

TABLE

TAB

5

數據表IDOBJID字段)

包括所有數據和索引的整個表。

文件

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的鎖機制(一)——概述(鎖的種類與范圍)中的“示例代碼二”相內容。

轉載于:https://www.cnblogs.com/mwming/p/3489335.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。