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

SQL Server數據庫鎖的引入的緣由

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

我們今天主要向大家介紹的是SQL Server數據庫鎖,以及對引入SQL Server數據鎖的原因以及對鎖的區分類別的兩種方法的介紹,以下就是具體內容的描述,希望在你今后的學習中會有所幫助。

一. 為什么要引入鎖

當多個用戶同時對數據庫的并發操作時會帶來以下數據不一致的問題:

丟失更新

A,B兩個用戶讀同一數據并進行修改,其中一個用戶的修改結果破壞了另一個修改的結果,比如訂票系統

臟讀

A用戶修改了數據,隨后B用戶又讀出該數據,但A用戶因為某些原因取消了對數據的修改,數據恢復原值,此時B得到的數據就與數據庫內的數據產生了不一致

不可重復讀

A用戶讀取數據,隨后B用戶讀出該數據并修改,此時A用戶再讀取數據時發現前后兩次的值不一致

并發控制的主要方法是封SQL Server數據庫鎖,鎖就是在一段時間內禁止用戶做某些操作以避免產生數據不一致

二 鎖的分類

鎖的類別有兩種分法:

1. 從數據庫系統的角度來看:

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

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

鎖模式 描述

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

更新 (U) 用于可更新的資源中。防止當多個會話在讀取、SQL Server數據庫鎖定以及隨后可能進行的資源更新時發生常見形式的死鎖。

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

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

架構鎖 在執行依賴于表架構的操作時使用。架構鎖的類型為:架構修改 (Sch-M) 和架構穩定性 (Sch-S)。

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

共享鎖

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

更新鎖

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

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

排它鎖

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

意向鎖

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

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

鎖模式 描述

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

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

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

獨占鎖:

只允許進行鎖定操作的程序使用,其他任何對他的操作均不會被接受。執行數據更新命令時,SQL Server會自動使用獨占鎖。當對象上有其他鎖存在時,無法對其加獨占鎖。

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

更新鎖:

當SQL Server準備更新數據時,它首先對數據對象作更新鎖鎖定,這樣數據將不能被修改,但可以讀取。等到SQL Server確定要進行更新數據操作時,他會自動將更新鎖換為獨占鎖,當對象上有其他鎖存在時,無法對其加更新鎖。

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

樂觀鎖:完全依靠數據庫來管理鎖的工作。

悲觀鎖:程序員自己管理數據或對象上的SQL Server數據庫鎖處理。

MS-SQLSERVER 使用鎖在多個同時在數據庫內執行修改的用戶間實現悲觀并發控制

【編輯推薦】

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

2010-07-20 08:35:54

SQL Server鎖

2010-04-20 16:56:19

Oracle數據庫

2010-06-29 17:27:14

SQL Server

2011-03-24 09:07:11

SQL Server數備份

2011-03-24 09:24:08

SQL Server數還原

2011-03-24 09:45:34

SQL Server數恢復

2010-07-08 11:05:14

SQL Server數

2010-07-15 17:28:50

SQL Server

2010-06-29 17:22:13

2010-10-22 15:42:59

SQL Server創

2010-09-14 09:53:52

sql server還

2010-06-17 13:34:47

SQL Server數

2021-05-17 06:57:34

SQLServer數據庫

2018-02-27 15:48:31

數據庫SQL鎖死

2011-04-07 14:50:21

SQL Server數據庫

2010-07-08 15:55:25

SQL Server

2010-07-15 14:46:20

SQL Server數

2011-08-22 12:01:36

SQL Server代碼優化

2010-11-29 11:55:47

SYBASE數據庫

2009-03-30 10:56:58

SQL Server數據庫死鎖數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 少妇久久久久 | 久久久激情 | 欧美日韩国产一区二区三区 | 国产乱人伦 | 一区二区三区精品在线 | 亚洲欧美日韩久久 | 亚洲国产看片 | 草久在线视频 | 亚洲视频在线观看 | 中文字幕亚洲精品 | 在线视频91 | 中文字幕免费中文 | 黑人精品| 中文字幕日韩欧美一区二区三区 | 国产精品久久网 | 欧美日韩精品一区 | 一区视频 | 久久国产精品视频免费看 | 成人国产精品久久久 | 狠狠狠干| 国产精品美女久久久久久久久久久 | 黄色欧美视频 | av手机免费在线观看 | 羞羞视频免费观看 | 国产精品久久久久久一级毛片 | 夜夜爽99久久国产综合精品女不卡 | 久久99国产精一区二区三区 | 成人在线一级片 | 成人午夜影院 | 91精品国产91久久久久久吃药 | 精品二区| 亚洲欧洲成人在线 | 精品国产一级 | 国产真实精品久久二三区 | 天堂成人av | 亚洲精品美女 | 国产精品小视频在线观看 | 亚洲一区二区在线视频 | 一区中文字幕 | 超碰97在线免费 | 国产91久久精品一区二区 |