国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

堆表和%%lockres%%函數(shù)

2024-07-21 02:46:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
堆表和%%lockres%%函數(shù)

在今天的文章里,我想向你展示下SQL Server里一個(gè)未公開(kāi)的函數(shù),還有你如何用那個(gè)函數(shù)來(lái)找出在哪頁(yè)記錄被存儲(chǔ)。

%%lockres%%

今天我想向你展示的未公開(kāi)函數(shù)叫做%%lockres%%,它與SQL Server的鎖實(shí)現(xiàn)有關(guān)。我們都知道,SQL Server實(shí)現(xiàn)鎖層級(jí)并在記錄層,頁(yè)層,表層請(qǐng)求鎖。當(dāng)在記錄層鎖被請(qǐng)求,SQL Server不在記錄本身放置鎖——SQL Server生成一個(gè)哈希值(hash value),這個(gè)結(jié)果哈希值最后被鎖。為了計(jì)算這個(gè)哈希值,SQL Server使用未公開(kāi)的%%lockres%%函數(shù)——你也可以自己調(diào)用。

當(dāng)你在聚集表(有聚集索引定義的表)上調(diào)用這個(gè)函數(shù),%%lockres%%返回你聚集鍵列的哈希值。

1 SELECT %%lockres%%, * FROM Person.Person

通過(guò)%%lockres%%的返回值幾乎沒(méi)有意思,因?yàn)樗皇莻€(gè)哈希值。但它可以是很方便的,因?yàn)樵?strong>sys.dm_tran_locks DMV里,你會(huì)知道resource_description列的哈希值。因?yàn)楹苋菀渍页鲈谀菞l記錄上鎖被請(qǐng)求。

當(dāng)你想在堆表上請(qǐng)求一個(gè)行層的鎖,沒(méi)有鍵值可以生成哈希值。在這個(gè)情況下,SQL Server在RID值上放置鎖——即所謂的行標(biāo)識(shí)值(Row Identifier Value)。這個(gè)值8 bytes長(zhǎng)有如下格式:文件號(hào):頁(yè)號(hào):槽號(hào)(FileID:PageID:Slot)。當(dāng)你在堆表上調(diào)用%%lockres%%時(shí),SQL Server會(huì)返回你這個(gè)RID值。

1 SELECT %%lockres%%, * FROM DatabaseLog

因此很容易在堆表上找到在哪個(gè)文件,哪個(gè)頁(yè),哪個(gè)槽號(hào)記錄被存儲(chǔ)——很簡(jiǎn)單,是不是?

感謝關(guān)注!


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西青区| 绥江县| 白城市| 元阳县| 丹东市| 福清市| 壤塘县| 英山县| 大英县| 常德市| 钦州市| 贺州市| 麻城市| 麦盖提县| 陆河县| 察隅县| 北流市| 曲麻莱县| 钦州市| 温宿县| 建德市| 古交市| 宜阳县| 吉木乃县| 进贤县| 磴口县| 阳山县| 长垣县| 通榆县| 鹤岗市| 翁牛特旗| 泾源县| 宿州市| 伊金霍洛旗| 金平| 永兴县| 肃宁县| 海伦市| 广东省| 舞阳县| 龙江县|