天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

SQL Server數(shù)據(jù)庫(kù)表鎖定原理以及如何解除表的鎖定

  1. 數(shù)據(jù)庫(kù)表鎖定原理

  1.1 目前的C/S,B/S結(jié)構(gòu)都是多用戶訪問數(shù)據(jù)庫(kù),每個(gè)時(shí)間點(diǎn)會(huì)有成千上萬(wàn)個(gè)user來訪問DB,其中也會(huì)同時(shí)存取同一份數(shù)據(jù),會(huì)造成數(shù)據(jù)的不一致性或者讀臟數(shù)據(jù)。

 

  1.2 事務(wù)的ACID原則

 

  1.3 鎖是關(guān)系數(shù)據(jù)庫(kù)很重要的一部分, 數(shù)據(jù)庫(kù)必須有鎖的機(jī)制來確保數(shù)據(jù)的完整和一致性。

  1.3.1 SQL Server中可以鎖定的資源:

  1.3.2 鎖的粒度:

  1.3.3 鎖的升級(jí):鎖的升級(jí)門限以及鎖升級(jí)是由系統(tǒng)自動(dòng)來確定的,不需要用戶設(shè)置。

  1.3.4 鎖的類型

  (1) 共享鎖:共享鎖用于所有的只讀數(shù)據(jù)操作。

  (2) 修改鎖:修改鎖在修改操作的初始化階段用來鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現(xiàn)象。

  (3) 獨(dú)占鎖:獨(dú)占鎖是為修改數(shù)據(jù)而保留的。它所鎖定的資源,其他事務(wù)不能讀取也不能修改。獨(dú)占鎖不能和其他鎖兼容。

  (4) 架構(gòu)鎖:結(jié)構(gòu)鎖分為結(jié)構(gòu)修改鎖(Sch-M)和結(jié)構(gòu)穩(wěn)定鎖(Sch-S)。執(zhí)行表定義語(yǔ)言操作時(shí),SQL Server采用Sch-M鎖,編譯查詢時(shí),SQL Server采用Sch-S鎖。 

  (5) 意向鎖:意向鎖說明SQL Server有在資源的低層獲得共享鎖或獨(dú)占鎖的意向。

  (6) 批量修改鎖:批量復(fù)制數(shù)據(jù)時(shí)使用批量修改鎖。

  1.3.4 SQL Server鎖類型   

  (1) HOLDLOCK: 在該表上保持共享鎖,直到整個(gè)事務(wù)結(jié)束,而不是在語(yǔ)句執(zhí)行完立即釋放所添加的鎖。   

  (2) NOLOCK:不添加共享鎖和排它鎖,當(dāng)這個(gè)選項(xiàng)生效后,可能讀到未提交讀的數(shù)據(jù)或“臟數(shù)據(jù)”,這個(gè)選項(xiàng)僅僅應(yīng)用于SELECT語(yǔ)句。   

  (3) PAGLOCK:指定添加頁(yè)鎖(否則通常可能添加表鎖)。    

  (4) READCOMMITTED用與運(yùn)行在提交讀隔離級(jí)別的事務(wù)相同的鎖語(yǔ)義執(zhí)行掃描。默認(rèn)情況下,SQL Server 2000 在此隔離級(jí)別上操作。

  (5) READPAST: 跳過已經(jīng)加鎖的數(shù)據(jù)行,這個(gè)選項(xiàng)將使事務(wù)讀取數(shù)據(jù)時(shí)跳過那些已經(jīng)被其他事務(wù)鎖定的數(shù)據(jù)行,而不是阻塞直到其他事務(wù)釋放鎖,READPAST僅僅應(yīng)用于READ COMMITTED隔離性級(jí)別下事務(wù)操作中的SELECT語(yǔ)句操作。    

  (6) READUNCOMMITTED:等同于NOLOCK。    

  (7) REPEATABLEREAD:設(shè)置事務(wù)為可重復(fù)讀隔離性級(jí)別。    

(  8) ROWLOCK:使用行級(jí)鎖,而不使用粒度更粗的頁(yè)級(jí)鎖和表級(jí)鎖。     

  (9) SERIALIZABLE:用與運(yùn)行在可串行讀隔離級(jí)別的事務(wù)相同的鎖語(yǔ)義執(zhí)行掃描。等同于 HOLDLOCK。    

  (10) TABLOCK:指定使用表級(jí)鎖,而不是使用行級(jí)或頁(yè)面級(jí)的鎖,SQL Server在該語(yǔ)句執(zhí)行完后釋放這個(gè)鎖,而如果同時(shí)指定了HOLDLOCK,該鎖一直保持到這個(gè)事務(wù)結(jié)束。

  (11) TABLOCKX:指定在表上使用排它鎖,這個(gè)鎖可以阻止其他事務(wù)讀或更新這個(gè)表的數(shù)據(jù),直到這個(gè)語(yǔ)句或整個(gè)事務(wù)結(jié)束。    

  (12) UPDLOCK :指定在讀表中數(shù)據(jù)時(shí)設(shè)置更新 鎖(update lock)而不是設(shè)置共享鎖,該鎖一直保持到這個(gè)語(yǔ)句或整個(gè)事務(wù)結(jié)束,使用UPDLOCK的作用是允許用戶先讀取數(shù)據(jù)(而且不阻塞其他用戶讀數(shù)據(jù)),并且保證在后來再更新數(shù)據(jù)時(shí),這一段時(shí)間內(nèi)這些數(shù)據(jù)沒有被其他用戶修改。

  (本段摘自CSDN博客: http://blog.csdn.NET/zp752963831/archive/2009/02/18/3906477.ASPx)

  2. 如何解除表的鎖定,解鎖就是要終止鎖定的那個(gè)鏈接,或者等待該鏈接事務(wù)釋放。

  2.1 Activity Monitor

  可以通過Wait Type,Blocked By欄位查看到,SPID 54 被SPID 53 阻塞。 可以右鍵Details查到詳細(xì)的SQL 語(yǔ)句,或Kill掉這個(gè)進(jìn)程。

  2.2 SQL Server提供幾個(gè)DMV,查看locks:

  sys.dm_exec_requests

  sys.dm_tran_locks

  sys.dm_os_waiting_tasks

  sys.dm_tran_database_transactions

  (1)

 

select * from sys.dm_tran_locks where  resource_type<>'DATABASE' --and resource_database_id=DB_ID()

it知識(shí)庫(kù)SQL Server數(shù)據(jù)庫(kù)表鎖定原理以及如何解除表的鎖定,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91国在线视频 | 动漫美女的禁 | 一个人在线观看视频 | 寂寞骚妇女被后入式抽插 | 我的年轻漂亮继坶三级 | 中文字幕欧美一区 | 国产精品一区二区AV交换 | 高清国产一区 | 亚洲伊人精品 | 日本孕妇大胆孕交 | seyeye免费高清观看 | 亚洲黄色片免费看 | 国产视频这里只有精品 | 9999精品视频| 东京热一本无码av | 日韩久久影院 | 日本人添下面的全过程 | 成人片免费看 | 国产日韩精品一区二区在线观看 | 欧美在线看欧美视频免费 | 东北小伙FREECHINESE野外 东北嫖妓对白粗口 | 久久久久久亚洲精品影院 | 欧美在线亚洲综合国产人 | 亚洲欧美日韩中字视频三区 | 97人妻久久久精品系列A片 | 久久亚洲精品中文字幕60分钟 | 99视频在线精品免费观看18 | 国产精品免费一区二区区 | 龙广在线收听 | 97精品国偷拍自产在线 | 18禁黄久久久AAA片 | 久久日本片精品AAAAA国产 | 久久精品国产清白在天天线 | 校园男男高h小黄文 | 云南14学生真实初次破初视频 | 老师的玉足高跟鞋满足我 | 快播免费电影 | 花蝴蝶在线高清视频观看免费播放 | 一区两区三不卡 | 野花韩国高清完整版在线观看5 | 99在线精品免费视频 |