首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 鎖定提示 (Table Hints) 完整對照表

     編輯:關於SqlServer

SQL Server 提供多種鎖定提示 (Table Hints) 控制並行存取行為,常用於 SELECT ... FROM Table WITH (HINT)。以下整理 12 種常見提示:

提示說明
HOLDLOCK保持共享鎖至交易結束,等同 SERIALIZABLE。
NOLOCK不加共享/排他鎖,可能讀到未認可資料 (髒讀),等同 READUNCOMMITTED,僅限 SELECT。
PAGLOCK指定使用頁鎖 (而非表鎖)。
READCOMMITTED以已認可讀隔離層級語意執行掃描 (預設行為)。
READPAST跳過已被鎖定的列,避免阻塞,僅限 READ COMMITTED 隔離層級的 SELECT。
READUNCOMMITTED等同 NOLOCK。
REPEATABLEREAD設定交易為可重複讀隔離層級。
ROWLOCK強制使用列鎖,避免頁/表鎖升級。
SERIALIZABLE以可序列化隔離層級掃描,等同 HOLDLOCK。
TABLOCK使用表鎖,陳述式結束釋放;搭配 HOLDLOCK 則持有至交易結束。
TABLOCKX表排他鎖,阻塞其他讀寫,至陳述式或交易結束。
UPDLOCK讀取時加更新鎖 (而非共享鎖),持有至陳述式或交易結束,防止讀取後資料被他人修改。

使用建議

  • NOLOCK 適合報表、唯讀查詢,但須接受髒讀風險。
  • ROWLOCK/PAGLOCK/TABLOCK 可引導鎖粒度,減少升級開銷。
  • UPDLOCK 常用於「先查後更新」模式,避免更新衝突。
  • 鎖定提示會影響並行與效能,請依實際負載測試後再決定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved