日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SQL Server强制使用特定索引 、并行度、锁

發布時間:2025/3/15 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server强制使用特定索引 、并行度、锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL Server強制使用特定索引 、并行度

修改或刪除數據前先備份,先備份,先備份(重要事情說三遍)

很多時候你或許為了測試、或許為了規避并發給你SQL帶來的一些問題,常常需要強制指定目標sql選擇某個索引或并行度去執行,今天給大家分享一下SQL的強制行為11

1、強制使用某個索引

select id,name from A where id=2 with INDEX(idx_name)

2、強制使用某個并行度

select id,name from A where id=2 with option(MAXDOP=1)

3、強制不加鎖

--允許臟讀

select id,name from A with(nolock)

--跳過鎖定行

select id,name from A with(readpast)

--

4、強制保持表級鎖

--別人可以讀,但是不能插入、更新、刪除

select id,name from A with(holdlock)

--別人什么都不能做,包括讀

select id,name from A with(tablock)

?

以上,在一些特殊的場景下或許會能夠幫助到你!

?

補充:

鎖定提示???????????????????????????????? 描述?
HOLDLOCK??????? 將共享鎖保留到事務完成,而不是在相應的表、行或數據頁不再需要時就立即釋放鎖。HOLDLOCK??????? 等同于??????? SERIALIZABLE。???????
NOLOCK??????? 不要發出共享鎖,并且不要提供排它鎖。當此選項生效時,可能會讀取未提交的事務或一組在讀取中間回滾的頁面。有可能發生臟讀。僅應用于SELECT語句。???????
PAGLOCK??????? 在通常使用單個表鎖的地方采用頁鎖。???????
READCOMMITTED??????? 用與運行在提交讀隔離級別的事務相同的鎖語義執行掃描。默認情況下,SQLServer在此隔離級別上操作。???????
READPAST??????? 跳過鎖定行。此選項導致事務跳過由其它事務鎖定的行(這些行平常會顯示在結果集內),而不是阻塞該事務,使其等待其它事務釋放在這些行上的鎖。READPAST鎖提示僅適用于運行在提交讀隔離級別的事務,并且只在行級鎖之后讀取。僅用于SELECT語句。???????
READUNCOMMITTED??????? 等同于NOLOCK。???????
REPEATABLEREAD??????? 用與運行在可重復讀隔離級別的事務相同的鎖語義執行掃描。???????
ROWLOCK??????? 使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。???????
SERIALIZABLE??????? 用與運行在可串行讀隔離級別的事務相同的鎖語義執行掃描。等同于HOLDLOCK。???????
TABLOCK??????? 使用表鎖代替粒度更細的行級鎖或頁級鎖。在語句結束前,SQL Server一直持有該鎖。但是,如果同時指定HOLDLOCK,那么在事務結束之前,鎖將被一直持有。???????
TABLOCKX??????? 使用表的排它鎖。該鎖可以防止其它事務讀取或更新表,并在語句或事務結束前一直持有。???????
UPDLOCK??????? 讀取表時使用更新鎖,而不使用共享鎖,并將鎖一直保留到語句或事務的結束。UPDLOCK 的優點是允許您讀取數據(不阻塞其它事務)并在以后更新數據,同時確保自從上次讀取數據后數據沒有被更改。???????
XLOCK??????? 使用排它鎖并一直保持到由語句處理的所有數據上的事務結束時。可以使用PAGLOCK或TABLOCK 指定該鎖,這種情況下排它鎖適用于適當級別的粒度

?

轉載于:https://www.cnblogs.com/syforacle/p/7891800.html

總結

以上是生活随笔為你收集整理的SQL Server强制使用特定索引 、并行度、锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。