sqlserver 鎖表語(yǔ)句分享
更新時(shí)間:2012年01月30日 23:13:42 作者:
sqlserver 鎖表語(yǔ)句分享,需要的朋友可以參考下
鎖定數(shù)據(jù)庫(kù)的一個(gè)表
SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數(shù)據(jù)庫(kù)的一個(gè)表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
SELECT 語(yǔ)句中“加鎖選項(xiàng)”的功能說(shuō)明
SQL Server提供了強(qiáng)大而完備的鎖機(jī)制來(lái)幫助實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的并發(fā)性和高性能。用戶(hù)既能使用SQL Server的缺省設(shè)置也可以在select 語(yǔ)句中使用“加鎖選項(xiàng)”來(lái)實(shí)現(xiàn)預(yù)期的效果。 本文介紹了SELECT語(yǔ)句中的各項(xiàng)“加鎖選項(xiàng)”以及相應(yīng)的功能說(shuō)明。
功能說(shuō)明:
NOLOCK(不加鎖)
此選項(xiàng)被選中時(shí),SQL Server 在讀取或修改數(shù)據(jù)時(shí)不加任何鎖。 在這種情況下,用戶(hù)有可能讀取到未完成事務(wù)(Uncommited Transaction)或回滾(Roll Back)中的數(shù)據(jù), 即所謂的“臟數(shù)據(jù)”。
HOLDLOCK(保持鎖)
此選項(xiàng)被選中時(shí),SQL Server 會(huì)將此共享鎖保持至整個(gè)事務(wù)結(jié)束,而不會(huì)在途中釋放。
UPDLOCK(修改鎖)
此選項(xiàng)被選中時(shí),SQL Server 在讀取數(shù)據(jù)時(shí)使用修改鎖來(lái)代替共享鎖,并將此鎖保持至整個(gè)事務(wù)或命令結(jié)束。使用此選項(xiàng)能夠保證多個(gè)進(jìn)程能同時(shí)讀取數(shù)據(jù)但只有該進(jìn)程能修改數(shù)據(jù)。
TABLOCK(表鎖)
此選項(xiàng)被選中時(shí),SQL Server 將在整個(gè)表上置共享鎖直至該命令結(jié)束。 這個(gè)選項(xiàng)保證其他進(jìn)程只能讀取而不能修改數(shù)據(jù)。
PAGLOCK(頁(yè)鎖)
此選項(xiàng)為默認(rèn)選項(xiàng), 當(dāng)被選中時(shí),SQL Server 使用共享頁(yè)鎖。
TABLOCKX(排它表鎖)
此選項(xiàng)被選中時(shí),SQL Server 將在整個(gè)表上置排它鎖直至該命令或事務(wù)結(jié)束。這將防止其他進(jìn)程讀取或修改表中的數(shù)據(jù)。
HOLDLOCK 持有共享鎖,直到整個(gè)事務(wù)完成,應(yīng)該在被鎖對(duì)象不需要時(shí)立即釋放,等于SERIALIZABLE事務(wù)隔離級(jí)別
NOLOCK 語(yǔ)句執(zhí)行時(shí)不發(fā)出共享鎖,允許臟讀 ,等于 READ UNCOMMITTED事務(wù)隔離級(jí)別
PAGLOCK 在使用一個(gè)表鎖的地方用多個(gè)頁(yè)鎖
READPAST 讓sql server跳過(guò)任何鎖定行,執(zhí)行事務(wù),適用于READ UNCOMMITTED事務(wù)隔離級(jí)別只跳過(guò)RID鎖,不跳過(guò)頁(yè),區(qū)域和表鎖
ROWLOCK 強(qiáng)制使用行鎖
TABLOCKX 強(qiáng)制使用獨(dú)占表級(jí)鎖,這個(gè)鎖在事務(wù)期間阻止任何其他事務(wù)使用這個(gè)表
UPLOCK 強(qiáng)制在讀表時(shí)使用更新而不用共享鎖
注意: 鎖定數(shù)據(jù)庫(kù)的一個(gè)表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK) 其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX) 其他事務(wù)不能讀取表,更新和刪
SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數(shù)據(jù)庫(kù)的一個(gè)表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
SELECT 語(yǔ)句中“加鎖選項(xiàng)”的功能說(shuō)明
SQL Server提供了強(qiáng)大而完備的鎖機(jī)制來(lái)幫助實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的并發(fā)性和高性能。用戶(hù)既能使用SQL Server的缺省設(shè)置也可以在select 語(yǔ)句中使用“加鎖選項(xiàng)”來(lái)實(shí)現(xiàn)預(yù)期的效果。 本文介紹了SELECT語(yǔ)句中的各項(xiàng)“加鎖選項(xiàng)”以及相應(yīng)的功能說(shuō)明。
功能說(shuō)明:
NOLOCK(不加鎖)
此選項(xiàng)被選中時(shí),SQL Server 在讀取或修改數(shù)據(jù)時(shí)不加任何鎖。 在這種情況下,用戶(hù)有可能讀取到未完成事務(wù)(Uncommited Transaction)或回滾(Roll Back)中的數(shù)據(jù), 即所謂的“臟數(shù)據(jù)”。
HOLDLOCK(保持鎖)
此選項(xiàng)被選中時(shí),SQL Server 會(huì)將此共享鎖保持至整個(gè)事務(wù)結(jié)束,而不會(huì)在途中釋放。
UPDLOCK(修改鎖)
此選項(xiàng)被選中時(shí),SQL Server 在讀取數(shù)據(jù)時(shí)使用修改鎖來(lái)代替共享鎖,并將此鎖保持至整個(gè)事務(wù)或命令結(jié)束。使用此選項(xiàng)能夠保證多個(gè)進(jìn)程能同時(shí)讀取數(shù)據(jù)但只有該進(jìn)程能修改數(shù)據(jù)。
TABLOCK(表鎖)
此選項(xiàng)被選中時(shí),SQL Server 將在整個(gè)表上置共享鎖直至該命令結(jié)束。 這個(gè)選項(xiàng)保證其他進(jìn)程只能讀取而不能修改數(shù)據(jù)。
PAGLOCK(頁(yè)鎖)
此選項(xiàng)為默認(rèn)選項(xiàng), 當(dāng)被選中時(shí),SQL Server 使用共享頁(yè)鎖。
TABLOCKX(排它表鎖)
此選項(xiàng)被選中時(shí),SQL Server 將在整個(gè)表上置排它鎖直至該命令或事務(wù)結(jié)束。這將防止其他進(jìn)程讀取或修改表中的數(shù)據(jù)。
HOLDLOCK 持有共享鎖,直到整個(gè)事務(wù)完成,應(yīng)該在被鎖對(duì)象不需要時(shí)立即釋放,等于SERIALIZABLE事務(wù)隔離級(jí)別
NOLOCK 語(yǔ)句執(zhí)行時(shí)不發(fā)出共享鎖,允許臟讀 ,等于 READ UNCOMMITTED事務(wù)隔離級(jí)別
PAGLOCK 在使用一個(gè)表鎖的地方用多個(gè)頁(yè)鎖
READPAST 讓sql server跳過(guò)任何鎖定行,執(zhí)行事務(wù),適用于READ UNCOMMITTED事務(wù)隔離級(jí)別只跳過(guò)RID鎖,不跳過(guò)頁(yè),區(qū)域和表鎖
ROWLOCK 強(qiáng)制使用行鎖
TABLOCKX 強(qiáng)制使用獨(dú)占表級(jí)鎖,這個(gè)鎖在事務(wù)期間阻止任何其他事務(wù)使用這個(gè)表
UPLOCK 強(qiáng)制在讀表時(shí)使用更新而不用共享鎖
注意: 鎖定數(shù)據(jù)庫(kù)的一個(gè)表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK) 其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX) 其他事務(wù)不能讀取表,更新和刪
相關(guān)文章
SQL Server修改標(biāo)識(shí)列方法 如自增列的批量化修改
最近在運(yùn)行系統(tǒng)時(shí)需要對(duì)所有服務(wù)器上數(shù)據(jù)結(jié)構(gòu)進(jìn)行批量修改某個(gè)字段的自增屬性改成非自增2012-05-05
SQL Server存儲(chǔ)過(guò)程的基礎(chǔ)說(shuō)明
創(chuàng)建存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程是保存起來(lái)的可以接受和返回用戶(hù)提供的參數(shù)的 Transact-SQL 語(yǔ)句的集合。2008-10-10
sql server的 update from 語(yǔ)句的深究
這篇文章主要介紹了sql server的 update from 語(yǔ)句的深究,需要的朋友可以參考下2014-12-12
基于Python的SQL Server數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)象同步輕量級(jí)
這篇文章主要介紹了基于Python的SQL Server數(shù)據(jù)庫(kù)對(duì)象同步輕量級(jí)實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
SQL Server復(fù)制功能要避開(kāi)缺陷的干擾小結(jié)
SQL Server具有強(qiáng)大的復(fù)制功能,除了將數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象從一個(gè)數(shù)據(jù)庫(kù)復(fù)制并準(zhǔn)確分發(fā)的另一個(gè)數(shù)據(jù)庫(kù)中,還要實(shí)行數(shù)據(jù)庫(kù)之間的同步。2011-03-03
淺談SELECT?*會(huì)導(dǎo)致查詢(xún)效率低的原因
本文主要介紹了淺談SELECT?*會(huì)導(dǎo)致查詢(xún)效率低的原因,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
數(shù)據(jù)庫(kù)清除日志文件(LDF文件過(guò)大)
數(shù)據(jù)庫(kù)清除日志文件,(LDF文件過(guò)大),一般情況下,有更簡(jiǎn)單的方法,需要在sqlserver查詢(xún)執(zhí)行。2009-11-11

