SQL Server 提供豐富的鎖機制支援並發與效能。除預設隔離等級外,可在 SELECT 中使用「鎖定提示」覆寫預設行為。使用提示將忽略 SET TRANSACTION ISOLATION LEVEL 設定。
| 提示 | 中文名稱 | 行為描述 | 典型應用場景 |
|---|---|---|---|
NOLOCK | 不加鎖(髒讀) | 讀取/修改時不加任何鎖,可能讀到未認可資料 | 報表查詢、資料探勘、可容忍髒讀的場合 |
HOLDLOCK | 保持鎖 | 共享鎖持有至交易結束,不中途釋放 | 需確保資料在交易期間不被修改 |
UPDLOCK | 更新鎖 | 讀取時取得更新鎖而非共享鎖,持有至交易/命令結束 | 讀取後稍後更新,防止其他交易修改同一資料 |
TABLOCK | 資料表鎖 | 整張表加共享鎖至命令結束 | 大量載入資料、整表掃描需阻塞寫入 |
PAGLOCK | 頁面鎖(預設) | 使用共享頁面鎖 | 一般 OLTP 查詢,平衡並發與開銷 |
TABLOCKX | 排他資料表鎖 | 整張表加排他鎖至命令/交易結束 | 資料維護、大量刪除/更新,需獨佔資料表 |
READUNCOMMITTED,慎用於財務/關鍵業務SERIALIZABLE 範圍鎖,易造成阻塞SELECT ... FROM table WITH (hint) 線上文件