Pages

2013年8月16日 星期五

SQL LOCK 簡易描述

LOCK提示描述:


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


NOLOCK不要發出共用鎖,並且不要提供排它鎖。當此選項生效時,可能會讀取未提交的事務或一組在讀取中間回滾的頁面。有可能發生髒讀。僅應用於SELECT語句。
PAGLOCK在通常使用單個表鎖的地方採用頁鎖。


READCOMMITTED用與運行在提交讀隔離級別的事務相同的鎖語義執行掃描。預設情況下,SQLServer2000在此隔離級別上操作。


READPAST跳過鎖定行。此選項導致事務跳過由其它事務鎖定的行(這些行平常會顯示在結果集內),而不是阻塞該事務,使其等待其它事務釋放在這些行上的鎖。READPAST鎖提示僅適用於運行在提交讀隔離級別的事務,並且只在行級鎖之後讀取。僅適用於SELECT語句。
READUNCOMMITTED等同於NOLOCK。


REPEATABLEREAD用與運行在可重複讀隔離級別的事務相同的鎖語義執行掃描。
ROWLOCK使用行級鎖,而不使用細微性更粗的頁級鎖和表級鎖。
SERIALIZABLE用與運行在可串列讀隔離級別的事務相同的鎖語義執行掃描。等同於HOLDLOCK。


TABLOCK使用表鎖代替細微性更細的行級鎖或頁級鎖。在語句結束前,SQLServer一直持有該鎖。但是,如果同時指定HOLDLOCK,那麼在事務結束之前,鎖將被一直持有。
TABLOCKX使用表的排它鎖。該鎖可以防止其它事務讀取或更新表,並在語句或事務結束前一直持有。


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


XLOCK使用排它鎖並一直保持到由語句處理的所有資料上的事務結束時。可以使用PAGLOCK或TABLOCK指定該鎖,這種情況下排它鎖適用於適當級別的細微性

Related Posts:

  • Microsoft JDBC 連接 URL 範例 在下列範例中,範例程式碼會在連接 URL 中設定各種連接屬性,然後呼叫 DriverManager 類別的 getConnection 方法,以傳回SQLServerConnection 物件。 接著,範例程式碼會使用 SQLServerConnection 物件的 createStatement 方法建立 SQLServerStatemen… Read More
  • 鎖的問題 在SQL Server中使用加鎖的問題,我就以前的經驗和收集的一些資料簡單的提出我自己的一些看法,不知道對啟明星是否有所幫助: 一般而言,下面是個典型的打開資料庫的過程。 <% ’游標類型 Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 Const adOpenDynamic =&nb… Read More
  • SQL Server Studio Manager 抓取錯誤訊息直接利用 PRINT使用下列函式,即可印出錯誤訊息。 USE AdventureWorks2008R2; GO -- Verify that the stored procedure does not already exist. IF OBJECT_ID ( 'usp_GetErrorInfo', 'P' ) IS NOT NULL DROP PROCEDURE usp_GetErrorInfo; GO -- Create pro… Read More
  • T-SQL 取代Cursor操作轉仔自 : RICO技術農場 自己在工作開發上(雖然很少開發...XD)遇到要執行一筆一筆的操作, 我會盡量避免使用Cursor來處理(效能會很差),而想其他方法來取代, 剛好看到網友詢問,這裡順手紀錄針對一筆一筆操作不使用Cursor做法。 需求:取得來源資料表col2欄位並依col1條件逐筆更新目的資料表c2欄位(@desttbl) declare @step int, @uplimit int, @currentid int,… Read More
  • SQL中的GETDATE() 轉換函式與產生結果--Sql Server 中一个非常强大的日期格式化函数 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100)… Read More

0 意見: