一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

  1.1 目前的C/S,B/S結(jié)構(gòu)都是多用戶訪問(wèn)數(shù)據(jù)庫(kù),每個(gè)時(shí)間點(diǎn)會(huì)有成千上萬(wàn)個(gè)user來(lái)訪問(wèn)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ī)制來(lái)確保數(shù)據(jù)的完整和一致性。

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

  1.3.2 鎖的粒度:

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

  1.3.4 鎖的類型

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

  (2) 修改鎖:修改鎖在修改操作的初始化階段用來(lái)鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現(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) 意向鎖:意向鎖說(shuō)明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: 跳過(guò)已經(jīng)加鎖的數(shù)據(jù)行,這個(gè)選項(xiàng)將使事務(wù)讀取數(shù)據(jù)時(shí)跳過(guò)那些已經(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ù)),并且保證在后來(lái)再更新數(shù)據(jù)時(shí),這一段時(shí)間內(nèi)這些數(shù)據(jù)沒(méi)有被其他用戶修改。

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

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

  2.1 Activity Monitor

  可以通過(guò)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)載需保留來(lái)源!

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

主站蜘蛛池模板: 韩国福利影视一区二区三区 | 亚洲综合色婷婷久久 | 伊人婷婷涩六月丁香七月 | 国产综合视频在线观看一区 | 男女午夜性爽快免费视频不卡 | swag精品 | 婷婷丁香激情五月 | 国产精品视频九九九 | 久久免费99精品国产自在现线 | www.91久久| 亚洲无吗在线视频 | 在线播放黄色网址 | 青青热在线精品视频免费 | 天堂在线观看 | 天天综合视频网 | 好吊妞视频免费观看va | 性福利视频 | 国产美女视频免费 | 国产精品成人一区二区 | 中文国产成人精品久久水 | 国产123| 五月婷婷欧美 | 看全色黄大色黄大片色黄看的 | 国产麻豆精品原创 | 午夜欧美性视频在线播放 | 青草国产在线视频 | 精品久久久久久久久中文字幕 | 亚洲a在线观看 | 中文字幕在线视频精品 | 国产精品视频第二区第二页 | 中文字幕日韩专区精品系列 | 成年美女黄网站色大免费视频 | 一级一级特黄女人精品毛片 | 久久亚洲国产最新网站 | 最新国产精品亚洲 | 五月天最新网址 | 国产一区二区三区毛片 | caoporen国产91在线 | 在线免费看污视频 | 成人午夜视频在线观 | www.一区二区三区.com |