一区二区久久-一区二区三区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)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲一区中文 | 91香蕉福利一区二区三区 | 国产精品三区四区 | 国产成人禁片免费观看视频 | 在线观看黄视频 | 色网站在线看 | 国产在亚洲线视频观看 | 久久er国产精品免费观看2 | 91网在线观看 | 香蕉成人在线 | 国内精品日本久久久久影院 | 岛国一区二区 | 丁香六月 久久久 | 欧美大片欧美激情免费看一 | 五月婷丁香 | 大香伊人久久精品一区二区 | 午夜乩伦 | 91在线网 | 精品91视频 | 国产成人香蕉在线视频网站 | 视频国产91 | 色久悠悠色久在线观看 | 激情亚洲视频 | 黄色免费观看网站 | 美女网站色免费 | 樱花aⅴ一区二区三区四区 影音先锋 色天使 | 免费不卡毛片 | 国产精品伦理一区二区三区 | 亚洲精品午夜视频 | 伊人婷婷在线 | 免费色视频在线观看 | 国内精品久久久久久中文字幕 | 久久国产精品麻豆映画 | 久久视热这只是精品222 | 亚洲a毛片 | 成人在色线视频在线观看免费大全 | 婷婷激情网站 | 精品国产一区二区三区在线 | 国产精品女同一区二区久久 | 激情影院免费看 | 日日草草 |