成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數(shù)據(jù)庫鎖的引入的緣由

數(shù)據(jù)庫 SQL Server
以下的文章主要描述的是SQL Server數(shù)據(jù)庫鎖,你如果對其有興趣的話你就可以點(diǎn)擊以下的文章進(jìn)行觀看了,望你能有所收獲。

我們今天主要向大家介紹的是SQL Server數(shù)據(jù)庫鎖,以及對引入SQL Server數(shù)據(jù)鎖的原因以及對鎖的區(qū)分類別的兩種方法的介紹,以下就是具體內(nèi)容的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。

一. 為什么要引入鎖

當(dāng)多個(gè)用戶同時(shí)對數(shù)據(jù)庫的并發(fā)操作時(shí)會(huì)帶來以下數(shù)據(jù)不一致的問題:

丟失更新

A,B兩個(gè)用戶讀同一數(shù)據(jù)并進(jìn)行修改,其中一個(gè)用戶的修改結(jié)果破壞了另一個(gè)修改的結(jié)果,比如訂票系統(tǒng)

臟讀

A用戶修改了數(shù)據(jù),隨后B用戶又讀出該數(shù)據(jù),但A用戶因?yàn)槟承┰蛉∠藢?shù)據(jù)的修改,數(shù)據(jù)恢復(fù)原值,此時(shí)B得到的數(shù)據(jù)就與數(shù)據(jù)庫內(nèi)的數(shù)據(jù)產(chǎn)生了不一致

不可重復(fù)讀

A用戶讀取數(shù)據(jù),隨后B用戶讀出該數(shù)據(jù)并修改,此時(shí)A用戶再讀取數(shù)據(jù)時(shí)發(fā)現(xiàn)前后兩次的值不一致

并發(fā)控制的主要方法是封SQL Server數(shù)據(jù)庫鎖,鎖就是在一段時(shí)間內(nèi)禁止用戶做某些操作以避免產(chǎn)生數(shù)據(jù)不一致

二 鎖的分類

鎖的類別有兩種分法:

1. 從數(shù)據(jù)庫系統(tǒng)的角度來看:

分為獨(dú)占鎖(即排它鎖),共享鎖和更新鎖

MS-SQL Server 使用以下資源鎖模式。

鎖模式 描述

共享 (S) 用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如 SELECT 語句。

更新 (U) 用于可更新的資源中。防止當(dāng)多個(gè)會(huì)話在讀取、SQL Server數(shù)據(jù)庫鎖定以及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見形式的死鎖。

排它 (X) 用于數(shù)據(jù)修改操作,例如 INSERT、UPDATE 或 DELETE。確保不會(huì)同時(shí)同一資源進(jìn)行多重更新。

意向鎖 用于建立鎖的層次結(jié)構(gòu)。意向鎖的類型為:意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。

架構(gòu)鎖 在執(zhí)行依賴于表架構(gòu)的操作時(shí)使用。架構(gòu)鎖的類型為:架構(gòu)修改 (Sch-M) 和架構(gòu)穩(wěn)定性 (Sch-S)。

大容量更新 (BU) 向表中大容量復(fù)制數(shù)據(jù)并指定了 TABLOCK 提示時(shí)使用。

共享鎖

共享 (S) 鎖允許并發(fā)事務(wù)讀取 (SELECT) 一個(gè)資源。資源上存在共享 (S) 鎖時(shí),任何其它事務(wù)都不能修改數(shù)據(jù)。一旦已經(jīng)讀取數(shù)據(jù),便立即釋放資源上的共享 (S) 鎖,除非將事務(wù)隔離級別設(shè)置為可重復(fù)讀或更高級別,或者在事務(wù)生存周期內(nèi)用鎖定提示保留共享 (S) 鎖。

更新鎖

更新 (U) 鎖可以防止通常形式的死鎖。一般更新模式由一個(gè)事務(wù)組成,此事務(wù)讀取記錄,獲取資源(頁或行)的共享 (S) 鎖,然后修改行,此操作要求鎖轉(zhuǎn)換為排它 (X) 鎖。如果兩個(gè)事務(wù)獲得了資源上的共享模式鎖,然后試圖同時(shí)更新數(shù)據(jù),則一個(gè)事務(wù)嘗試將鎖轉(zhuǎn)換為排它 (X) 鎖。共享模式到排它鎖的轉(zhuǎn)換必須等待一段時(shí)間,因?yàn)橐粋€(gè)事務(wù)的排它鎖與其它事務(wù)的共享模式鎖不兼容;發(fā)生鎖等待。第二個(gè)事務(wù)試圖獲取排它 (X) 鎖以進(jìn)行更新。由于兩個(gè)事務(wù)都要轉(zhuǎn)換為排它 (X) 鎖,并且每個(gè)事務(wù)都等待另一個(gè)事務(wù)釋放共享模式SQL Server數(shù)據(jù)庫鎖,因此發(fā)生死鎖。

若要避免這種潛在的死鎖問題,請使用更新 (U) 鎖。一次只有一個(gè)事務(wù)可以獲得資源的更新 (U) 鎖。如果事務(wù)修改資源,則更新 (U) 鎖轉(zhuǎn)換為排它 (X) 鎖。否則,鎖轉(zhuǎn)換為共享鎖。

排它鎖

排它 (X) 鎖可以防止并發(fā)事務(wù)對資源進(jìn)行訪問。其它事務(wù)不能讀取或修改排它 (X) 鎖鎖定的數(shù)據(jù)。

意向鎖

意向鎖表示 SQL Server 需要在層次結(jié)構(gòu)中的某些底層資源上獲取共享 (S) 鎖或排它 (X) 鎖。例如,放置在表級的共享意向鎖表示事務(wù)打算在表中的頁或行上放置共享 (S) 鎖。在表級設(shè)置意向鎖可防止另一個(gè)事務(wù)隨后在包含那一頁的表上獲取排它 (X) 鎖。意向鎖可以提高性能,因?yàn)?SQL Server 僅在表級檢查意向鎖來確定事務(wù)是否可以安全地獲取該表上的鎖。而無須檢查表中的每行或每頁上的鎖以確定事務(wù)是否可以鎖定整個(gè)表。

意向鎖包括意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。

鎖模式 描述

意向共享 (IS) 通過在各資源上放置 S 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的部分(而不是全部)底層資源。

意向排它 (IX) 通過在各資源上放置 X 鎖,表明事務(wù)的意向是修改層次結(jié)構(gòu)中的部分(而不是全部)底層資源。IX 是 IS 的超集。

與意向排它共享 (SIX) 通過在各資源上放置 IX 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的全部底層資源并修改部分(而不是全部)底層資源。允許頂層資源上的并發(fā) IS 鎖。例如,表的 SIX 鎖在表上放置一個(gè) SIX 鎖(允許并發(fā) IS 鎖),在當(dāng)前所修改頁上放置 IX 鎖(在已修改行上放置 X 鎖)。雖然每個(gè)資源在一段時(shí)間內(nèi)只能有一個(gè) SIX 鎖,以防止其它事務(wù)對資源進(jìn)行更新,但是其它事務(wù)可以通過獲取表級的 IS 鎖來讀取層次結(jié)構(gòu)中的底層資源。

獨(dú)占鎖:

只允許進(jìn)行鎖定操作的程序使用,其他任何對他的操作均不會(huì)被接受。執(zhí)行數(shù)據(jù)更新命令時(shí),SQL Server會(huì)自動(dòng)使用獨(dú)占鎖。當(dāng)對象上有其他鎖存在時(shí),無法對其加獨(dú)占鎖。

共享鎖:共享鎖鎖定的資源可以被其他用戶讀取,但其他用戶無法修改它,在執(zhí)行Select時(shí),SQL Server會(huì)對對象加共享鎖。

更新鎖:

當(dāng)SQL Server準(zhǔn)備更新數(shù)據(jù)時(shí),它首先對數(shù)據(jù)對象作更新鎖鎖定,這樣數(shù)據(jù)將不能被修改,但可以讀取。等到SQL Server確定要進(jìn)行更新數(shù)據(jù)操作時(shí),他會(huì)自動(dòng)將更新鎖換為獨(dú)占鎖,當(dāng)對象上有其他鎖存在時(shí),無法對其加更新鎖。

2. 從程序員的角度看:分為樂觀鎖和悲觀鎖。

樂觀鎖:完全依靠數(shù)據(jù)庫來管理鎖的工作。

悲觀鎖:程序員自己管理數(shù)據(jù)或?qū)ο笊系腟QL Server數(shù)據(jù)庫鎖處理。

MS-SQLSERVER 使用鎖在多個(gè)同時(shí)在數(shù)據(jù)庫內(nèi)執(zhí)行修改的用戶間實(shí)現(xiàn)悲觀并發(fā)控制

【編輯推薦】

  1. 優(yōu)化SQL Server數(shù)據(jù)庫的幾個(gè)大招
  2. SQL Server 2005 Express混合模式登錄的正確設(shè)置
  3. SQL Server CLR之去除字符串中的指定字符串
  4. 如何判斷SQL Server BIT類型占用空間的多少?
  5. SQL Server 2008 升級顧問大盤點(diǎn)
責(zé)任編輯:佚名 來源: 比特網(wǎng)
相關(guān)推薦

2010-07-20 08:35:54

SQL Server鎖

2010-04-20 16:56:19

Oracle數(shù)據(jù)庫

2010-06-29 17:27:14

SQL Server

2011-03-24 09:07:11

SQL Server數(shù)備份

2011-03-24 09:24:08

SQL Server數(shù)還原

2011-03-24 09:45:34

SQL Server數(shù)恢復(fù)

2010-07-08 11:05:14

SQL Server數(shù)

2010-07-15 17:28:50

SQL Server

2010-06-29 17:22:13

2010-10-22 15:42:59

SQL Server創(chuàng)

2010-09-14 09:53:52

sql server還

2010-06-17 13:34:47

SQL Server數(shù)

2011-04-07 14:50:21

SQL Server數(shù)據(jù)庫

2018-02-27 15:48:31

數(shù)據(jù)庫SQL鎖死

2021-05-17 06:57:34

SQLServer數(shù)據(jù)庫

2010-07-08 15:55:25

SQL Server

2010-07-15 14:46:20

SQL Server數(shù)

2011-08-22 12:01:36

SQL Server代碼優(yōu)化

2010-11-29 11:55:47

SYBASE數(shù)據(jù)庫

2010-06-18 09:31:51

SQL Server數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品久久久久久亚洲精品 | 精品久久久久久久久久久久久久久久久 | 一级a爱片久久毛片 | 中文字幕在线三区 | 麻豆成人在线视频 | 亚洲精品欧美一区二区三区 | 久久国产综合 | 久草免费在线视频 | 久久亚洲一区二区三区四区 | 日韩电影免费在线观看中文字幕 | 日韩三级在线 | 成人一区二区在线 | 91亚洲国产成人久久精品网站 | 国产精品久久毛片av大全日韩 | 久久伊人在 | 青青草一区 | 波多野结衣在线观看一区二区三区 | 伊人春色成人网 | 成在线人视频免费视频 | 久久久久久久久久久高潮一区二区 | 国产精彩视频 | 逼逼视频| 亚洲一区二区久久久 | 欧美亚洲激情 | 日韩免费一级 | 欧洲尺码日本国产精品 | 99精品网站 | 在线一区| 成人福利网站 | 欧美精品一区二区三区四区五区 | 一区二区三区福利视频 | 亚洲区在线 | 国产二区精品视频 | 香蕉久久a毛片 | 99精品电影 | 欧美极品在线 | 日本xx视频免费观看 | 天天操夜夜爽 | 青青草在线播放 | 午夜激情视频 | 日韩电影免费在线观看中文字幕 |