sqlserver使用select加鎖

2021-06-21 09:46:24 字數 1199 閱讀 4211

sqlserver使用select加鎖

功能說明

holdlock

將共享鎖保留到事務完成,而不是在相應的表、行或資料頁不再需要時就立即釋放鎖。holdlock 等同於 serializable。 

nolock

不要發出共享鎖,並且不要提供排它鎖。當此選項生效時,可能會讀取未提交的事務或一組在讀取中間回滾的頁面。有可能發生髒讀。僅應用於 select 語句。 

paglock

在通常使用單個表鎖的地方採用頁鎖。 readcommitted 用與執行在提交讀隔離級別的事務相同的鎖語義執行掃瞄。預設情況下,sql server 2000 在此隔離級別上操作。 

readpast

跳過鎖定行。此選項導致事務跳過由其它事務鎖定的行(這些行平常會顯示在結果集內),而不是阻塞該事務,使其等待其它事務釋放在這些行上的鎖。

readpast

鎖提示僅適用於執行在提交讀隔離級別的事務,並且只在行級鎖之後讀取。僅適用於 select 語句。 

readuncommitted

等同於 nolock。 repeatableread 用與執行在可重複讀隔離級別的事務相同的鎖語義執行掃瞄。  

rowlock

使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。 serializable 用與執行在可序列讀隔離級別的事務相同的鎖語義執行掃瞄。等同於 holdlock。 

tablock

使用表鎖代替粒度更細的行級鎖或頁級鎖。在語句結束前,sql server 一直持有該鎖。但是,如果同時指定 holdlock,那麼在事務結束之前,鎖將被一直持有。 

tablockx

使用表的排它鎖。該鎖可以防止其它事務讀取或更新表,並在語句或事務結束前一直持有。 

updlock

讀取表時使用更新鎖,而不使用共享鎖,並將鎖一直保留到語句或事務的結束。updlock 的優點是允許您讀取資料(不阻塞其它事務)並在以後更新資料,同時確保自從上次讀取資料後資料沒有被更改。 

xlock

使用排它鎖並一直保持到由語句處理的所有資料上的事務結束時。可以使用 paglock 或 tablock 指定該鎖,這種情況下排它鎖適用於適當級別的粒度。 至於鎖定多少條記錄的問題, sql預設的鎖定行為本來就是行級鎖定的, 所以你用top 1指定只鎖定一條記錄就好了/

select top 1 * from tb with(updlock, readpast)

see

socket程式設計使用poll替換select

poll函式在處理併發時,無fd setsize限制 伺服器端 include include include include include include 使用signal函式 include 使用wait函式 include include include include include de...

MySQL許可權篇之DELETE及SELECT

delete許可權,該許可權僅僅能刪除表中的記錄。但是要注意如果僅僅只授予了delete許可權。比如 mysql show grants for ut01 grants for ut01 grant usage on to ut01 1 row in set 0.00 sec mysql grant...

從打地鼠遊戲來看Winsock的Select模型

對於學習過c s網路程式設計的讀者來說,對select模型一定不會陌生。select模型是winsock中的5種i o模型之一,它主要用來實現tcp的一對多通訊 即乙個伺服器端程式同時和多個客戶端程式進行通訊 實現tcp一對多通訊的方法很多,最原始的辦法是採用多執行緒技術,在伺服器端同時開啟很多個執...