鎖定資料庫的乙個表 概述

2021-04-01 23:36:49 字數 1068 閱讀 3329

鎖定資料庫的乙個表

select * from table with (holdlock)

其他事務可以讀取表,但不能更新刪除

select * from table with (tablockx)

其他事務不能讀取表,更新和刪除

select 語句中「加鎖選項」的功能說明

sql server提供了強大而完備的鎖機制來幫助實現資料庫系統的併發性和高效能。使用者既能使用sql server的預設設定也可以在select 語句中使用「加鎖選項」來實現預期的效果。 本文介紹了select語句中的各項「加鎖選項」以及相應的功能說明。

功能說明: 

nolock(不加鎖)

此選項被選中時,sql server 在讀取或修改資料時不加任何鎖。 在這種情況下,使用者有可能讀取到未完成事務(uncommited transaction)或回滾(roll back)中的資料, 即所謂的「髒資料」。

holdlock(保持鎖)

此選項被選中時,sql server 會將此共享鎖保持至整個事務結束,而不會在途中釋放。

updlock(修改鎖)

此選項被選中時,sql server 在讀取資料時使用修改鎖來代替共享鎖,並將此鎖保持至整個事務或命令結束。使用此選項能夠保證多個程序能同時讀取資料但只有該程序能修改資料。

tablock(表鎖)

此選項被選中時,sql server 將在整個表上置共享鎖直至該命令結束。 這個選項保證其他程序只能讀取而不能修改資料。

paglock(頁鎖)

此選項為預設選項, 當被選中時,sql server 使用共享頁鎖。

tablockx(排它表鎖)

此選項被選中時,sql server 將在整個表上置排它鎖直至該命令或事務結束。這將防止其他程序讀取或修改表中的資料。

可參考:

MySQL鎖定資料庫表

mysql中所有鎖定不會是死鎖的。這通過總是在乙個查詢前立即請求所有必要的鎖定並且總是以同樣的順序鎖定表來管理。對write,mysql使用的鎖定方法原理如下 對read,mysql使用的鎖定方法原理如下 當乙個鎖定被釋放時,鎖定可被寫鎖定佇列中的執行緒得到,然後是讀鎖定佇列中的執行緒。這意味著,如...

資料庫表 行 資料庫鎖定

1如何鎖乙個表的某一行 settransaction isolation level read uncommitted select from table rowlock where id 1 2鎖定資料庫的乙個表 select from table with holdlock 加鎖語句 sybas...

資料庫建表的乙個坑

今天在預生產環境配置環境的時候出現了個問題,就是我乙個查詢sql竟然花了17秒,這是乙個嚴重的問題.本來以為是環境的問題,後來發現環境沒問題,那就是我的sql有問題,初步認為是沒有走索引.我把控制台 列印的sql放到預生產環境中直接執行,果然花了10多秒.執行了sql計畫發現確實沒有走索引,但是測試...