自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server資源鎖模式大全

數(shù)據(jù)庫 SQL Server
提升SQL Server數(shù)據(jù)庫的性能是大家熱議的話題,而SQL Server終的“鎖”是提高數(shù)據(jù)庫的并發(fā)訪問性能的關(guān)鍵所在。

SQL Server資源鎖模式都有哪些呢?這是很多人都提到過的問題,下面就為您詳細介紹各種SQL Server資源鎖模式,希望對您能有所幫助。

SQL Server 使用以下SQL Server資源鎖模式。

鎖模式    描述
共享(S) 用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如 SELECT 語句。
更新(U) 用于可更新的資源中。防止當(dāng)多個會話在讀取、鎖定以及隨后可能進行的資源更新時發(fā)生常見形式的死鎖。
排它(X) 用于數(shù)據(jù)修改操作,例如 INSERT、UPDATE 或 DELETE。確保不會同時對同一資源進行多重更新。
意向 用于建立鎖的層次結(jié)構(gòu)。意向鎖的類型為:意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。
架構(gòu) 在執(zhí)行依賴于表架構(gòu)的操作時使用。架構(gòu)鎖的類型為:架構(gòu)修改 (Sch-M) 和架構(gòu)穩(wěn)定性 (Sch-S)。
大容量更新(BU) 向表中大容量復(fù)制數(shù)據(jù)并指定了 TABLOCK 提示時使用。

共享鎖
共享 (S) 鎖允許并發(fā)事務(wù)讀取 (SELECT) 一個資源。資源上存在共享 (S) 鎖時,任何其它事務(wù)都不能修改數(shù)據(jù)。一旦已經(jīng)讀取數(shù)據(jù),便立即釋放資源上的共享 (S) 鎖,除非將事務(wù)隔離級別設(shè)置為可重復(fù)讀或更高級別,或者在事務(wù)生存周期內(nèi)用鎖定提示保留共享 (S) 鎖。

更新鎖
更新 (U) 鎖可以防止通常形式的死鎖。一般更新模式由一個事務(wù)組成,此事務(wù)讀取記錄,獲取資源(頁或行)的共享 (S) 鎖,然后修改行,此操作要求鎖轉(zhuǎn)換為排它 (X) 鎖。如果兩個事務(wù)獲得了資源上的共享模式鎖,然后試圖同時更新數(shù)據(jù),則一個事務(wù)嘗試將鎖轉(zhuǎn)換為排它 (X) 鎖。共享模式到排它鎖的轉(zhuǎn)換必須等待一段時間,因為一個事務(wù)的排它鎖與其它事務(wù)的共享模式鎖不兼容;發(fā)生鎖等待。第二個事務(wù)試圖獲取排它 (X) 鎖以進行更新。由于兩個事務(wù)都要轉(zhuǎn)換為排它 (X) 鎖,并且每個事務(wù)都等待另一個事務(wù)釋放共享模式鎖,因此發(fā)生死鎖。
若要避免這種潛在的死鎖問題,請使用更新 (U) 鎖。一次只有一個事務(wù)可以獲得資源的更新 (U) 鎖。如果事務(wù)修改資源,則更新 (U) 鎖轉(zhuǎn)換為排它 (X) 鎖。否則,鎖轉(zhuǎn)換為共享鎖。

排它鎖
排它 (X) 鎖可以防止并發(fā)事務(wù)對資源進行訪問。其它事務(wù)不能讀取或修改排它 (X) 鎖鎖定的數(shù)據(jù)。

意向鎖
意向鎖表示 SQL Server 需要在層次結(jié)構(gòu)中的某些底層資源上獲取共享 (S) 鎖或排它 (X) 鎖。例如,放置在表級的共享意向鎖表示事務(wù)打算在表中的頁或行上放置共享 (S) 鎖。在表級設(shè)置意向鎖可防止另一個事務(wù)隨后在包含那一頁的表上獲取排它 (X) 鎖。意向鎖可以提高性能,因為 SQL Server 僅在表級檢查意向鎖來確定事務(wù)是否可以安全地獲取該表上的鎖。而無須檢查表中的每行或每頁上的鎖以確定事務(wù)是否可以鎖定整個表。
意向鎖包括意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。
鎖模式 描述
意向共享 (IS) 通過在各資源上放置 S 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的部分(而不是全部)底層資源。
意向排它 (IX) 通過在各資源上放置 X 鎖,表明事務(wù)的意向是修改層次結(jié)構(gòu)中的部分(而不是全部)底層資源。IX 是 IS 的超集。
與意向排它共享 (SIX) 通過在各資源上放置 IX 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的全部底層資源并修改部分(而不是全部)底層資源。允許頂層資源上的并發(fā) IS 鎖。例如,表的 SIX 鎖在表上放置一個 SIX 鎖(允許并發(fā) IS 鎖),在當(dāng)前所修改頁上放置 IX 鎖(在已修改行上放置 X 鎖)。雖然每個資源在一段時間內(nèi)只能有一個 SIX 鎖,以防止其它事務(wù)對資源進行更新,但是其它事務(wù)可以通過獲取表級的 IS 鎖來讀取層次結(jié)構(gòu)中的底層資源。

架構(gòu)鎖
執(zhí)行表的數(shù)據(jù)定義語言 (DDL) 操作(例如添加列或除去表)時使用架構(gòu)修改 (Sch-M) 鎖。
當(dāng)編譯查詢時,使用架構(gòu)穩(wěn)定性 (Sch-S) 鎖。架構(gòu)穩(wěn)定性 (Sch-S) 鎖不阻塞任何事務(wù)鎖,包括排它 (X) 鎖。因此在編譯查詢時,其它事務(wù)(包括在表上有排它 (X) 鎖的事務(wù))都能繼續(xù)運行。但不能在表上執(zhí)行 DDL 操作。

大容量更新鎖
當(dāng)將數(shù)據(jù)大容量復(fù)制到表,且指定了 TABLOCK 提示或者使用 sp_tableoption 設(shè)置了 table lock on bulk 表選項時,將使用大容量更新 (BU) 鎖。大容量更新 (BU) 鎖允許進程將數(shù)據(jù)并發(fā)地大容量復(fù)制到同一表,同時防止其它不進行大容量復(fù)制數(shù)據(jù)的進程訪問該表。

 

 

 

【編輯推薦】

sql server查詢平均值的實現(xiàn)

SQL Server查詢累計值的實現(xiàn)

SQL Server字符串函數(shù)大全

SQL Server綁定連接

SQL Server分頁查詢的兩種方法

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-19 18:04:23

SQL Server鎖

2010-07-26 15:17:46

SQL Server鎖

2010-07-26 16:11:45

Microsoft S

2010-11-09 13:58:03

SQL Server鎖

2010-11-12 11:00:11

SQL SERVER內(nèi)

2010-09-27 16:19:37

SQL Server時

2010-06-29 17:17:44

SQL Server鎖

2010-11-08 17:07:41

SQL Server字

2011-09-01 19:00:08

SQL ServerDBCC語句

2010-06-28 08:37:58

SQL Server

2010-07-22 15:56:04

SQL Server臨

2010-07-19 17:57:22

SQL Server鎖

2010-07-20 08:35:54

SQL Server鎖

2010-09-08 14:49:12

SQL Server數(shù)據(jù)庫

2010-07-23 13:04:39

SQL Server

2010-07-06 10:19:15

SQL Server層

2010-07-20 08:48:14

SQL Server

2011-09-08 16:30:59

SQL Server查詢

2013-07-24 17:51:14

2010-11-09 11:40:14

SQL Server查
點贊
收藏

51CTO技術(shù)棧公眾號