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

SQL Server SELECT 語句鎖定提示(Table Hints)完整解析

     編輯:關於SqlServer

鎖定提示概述

SQL Server 提供豐富的鎖機制支援並發與效能。除預設隔離等級外,可在 SELECT 中使用「鎖定提示」覆寫預設行為。使用提示將忽略 SET TRANSACTION ISOLATION LEVEL 設定。

六大常用鎖定提示詳細說明

提示中文名稱行為描述典型應用場景
NOLOCK不加鎖(髒讀)讀取/修改時不加任何鎖,可能讀到未認可資料報表查詢、資料探勘、可容忍髒讀的場合
HOLDLOCK保持鎖共享鎖持有至交易結束,不中途釋放需確保資料在交易期間不被修改
UPDLOCK更新鎖讀取時取得更新鎖而非共享鎖,持有至交易/命令結束讀取後稍後更新,防止其他交易修改同一資料
TABLOCK資料表鎖整張表加共享鎖至命令結束大量載入資料、整表掃描需阻塞寫入
PAGLOCK頁面鎖(預設)使用共享頁面鎖一般 OLTP 查詢,平衡並發與開銷
TABLOCKX排他資料表鎖整張表加排他鎖至命令/交易結束資料維護、大量刪除/更新,需獨佔資料表

使用時機與注意事項

  • NOLOCK 等同 READUNCOMMITTED,慎用於財務/關鍵業務
  • HOLDLOCK 相當於 SERIALIZABLE 範圍鎖,易造成阻塞
  • 鎖定提示僅影響該陳述式,不改變資料庫層級設定
  • 詳細語法請參閱 SELECT ... FROM table WITH (hint) 線上文件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved