日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SqlServer查询语句中用到的锁

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SqlServer查询语句中用到的锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間**公司DBA來我們這培訓。講了一大堆MYSQL的優化。 QA環節一程序員問“SQL語句中的 with nolock 除了不鎖表外,是否能讀其他鎖住的數據"。

  講課的人嘟嘟了半天沒解釋清楚(有可能是MYSQL里沒有這個機制),公司的另一程序員給出了一個很簡潔明了的回答:

  WITH NOLOCK 除了本身不鎖表(不加任何鎖) 也不會受其他的已存在的鎖影響,鎖住的行數據也照樣讀,個人認為這句話說得很清楚明了,一句話就能說明白的事,不過好奇怪的是程序員經常用這個語句竟然也不去試一下。這里順便總結一下 其他的 SQLSERVER 中的with鎖級別:

  WITH NOLOCK:無鎖

  WITH HOLDLOCK:掛一個保持鎖

  WITH UPDLOCK:掛一個更新鎖

  WITH XLOCK:掛一個排他鎖

  需要注意的是 with nolock 是不能用于update,delete insert 這種更新語句的,說繞了。簡單的說 with nolock 只能用于select。

  例如:update dbo.test with(NOLOCK) set username='wokofo' --這樣的語句是錯誤的

  彈回:INSERT、UPDATE、DELETE 或 MERGE 語句的目標表不允許使用 NOLOCK 和 READUNCOMMITTED 鎖提示。

  實際使用:

selecttop10*from?dbo.test?with(NOLOCK)
selecttop10*from?dbo.test?with(HOLDLOCK)
selecttop10*from?dbo.test?with(XLOCK)
selecttop10*from?dbo.test?with(UPDLOCK)
update?dbo.test?with(HOLDLOCK)?set?username='wokofo'
update?dbo.test?with(XLOCK)?set?username='wokofo'
update?dbo.test?with(UPDLOCK)?set?username='wokofo'

轉載于:https://www.cnblogs.com/sunshch/archive/2013/04/02/2994771.html

總結

以上是生活随笔為你收集整理的SqlServer查询语句中用到的锁的全部內容,希望文章能夠幫你解決所遇到的問題。

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