欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
談?wù)凪SSQl鎖機制

鎖的概述

一. 為什么要引入鎖

多個(gè)用戶(hù)同時(shí)對數據庫的并發(fā)操作時(shí)會(huì )帶來(lái)以下數據不一致的問(wèn)題:

丟失更新
A,B兩個(gè)用戶(hù)讀同一數據并進(jìn)行修改,其中一個(gè)用戶(hù)的修改結果破壞了另一個(gè)修改的結果,比如訂票系統

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

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

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

二  鎖的分類(lèi)

鎖的類(lèi)別有兩種分法:
1. 從數據庫系統的角度來(lái)看:分為獨占鎖(即排它鎖),共享鎖和更新鎖

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

鎖模式      描述
共享        (S) 用于不更改或不更新數據的操作(只讀操作),如 SELECT 語(yǔ)句。
更新 (U)     用于可更新的資源中。防止當多個(gè)會(huì )話(huà)在讀取、鎖定以及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見(jiàn)形式的死鎖。
排它 (X)     用于數據修改操作,例如 INSERT、UPDATE 或 DELETE。確保不會(huì )同時(shí)同一資源進(jìn)行多重更新。
意向鎖       用于建立鎖的層次結構。意向鎖的類(lèi)型為:意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。
架構鎖        在執行依賴(lài)于表架構的操作時(shí)使用。架構鎖的類(lèi)型為:架構修改 (Sch-M) 和架構穩定性 (Sch-S)。
大容量更新 (BU) 向表中大容量復制數據并指定了 TABLOCK 提示時(shí)使用。

共享鎖
共享 (S) 鎖允許并發(fā)事務(wù)讀取 (SELECT) 一個(gè)資源。資源上存在共享 (S) 鎖時(shí),任何其它事務(wù)都不能修改數據。一旦已經(jīng)讀取數據,便立即釋放資源上的共享 (S) 鎖,除非將事務(wù)隔離級別設置為可重復讀或更高級別,或者在事務(wù)生存周期內用鎖定提示保留共享 (S) 鎖。
更新鎖
更新 (U) 鎖可以防止通常形式的死鎖。一般更新模式由一個(gè)事務(wù)組成,此事務(wù)讀取記錄,獲取資源(頁(yè)或行)的共享 (S) 鎖,然后修改行,此操作要求鎖轉換為排它 (X) 鎖。如果兩個(gè)事務(wù)獲得了資源上的共享模式鎖,然后試圖同時(shí)更新數據,則一個(gè)事務(wù)嘗試將鎖轉換為排它 (X) 鎖。共享模式到排它鎖的轉換必須等待一段時(shí)間,因為一個(gè)事務(wù)的排它鎖與其它事務(wù)的共享模式鎖不兼容;發(fā)生鎖等待。第二個(gè)事務(wù)試圖獲取排它 (X) 鎖以進(jìn)行更新。由于兩個(gè)事務(wù)都要轉換為排它 (X) 鎖,并且每個(gè)事務(wù)都等待另一個(gè)事務(wù)釋放共享模式鎖,因此發(fā)生死鎖。

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

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

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

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

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

獨占鎖:只允許進(jìn)行鎖定操作的程序使用,其他任何對他的操作均不會(huì )被接受。執行數據更新命令時(shí),SQL Server會(huì )自動(dòng)使用獨占鎖。當對象上有其他鎖存在時(shí),無(wú)法對其加獨占鎖。
共享鎖:共享鎖鎖定的資源可以被其他用戶(hù)讀取,但其他用戶(hù)無(wú)法修改它,在執行Select時(shí),SQL Server會(huì )對對象加共享鎖。
更新鎖:當SQL Server準備更新數據時(shí),它首先對數據對象作更新鎖鎖定,這樣數據將不能被修改,但可以讀取。等到SQL Server確定要進(jìn)行更新數據操作時(shí),他會(huì )自動(dòng)將更新鎖換為獨占鎖,當對象上有其他鎖存在時(shí),無(wú)法對其加更新鎖。
2. 從程序員的角度看:分為樂(lè )觀(guān)鎖和悲觀(guān)鎖。
樂(lè )觀(guān)鎖:完全依靠數據庫來(lái)管理鎖的工作。
悲觀(guān)鎖:程序員自己管理數據或對象上的鎖處理。

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


三  鎖的粒度
    鎖粒度是被封鎖目標的大小,封鎖粒度小則并發(fā)性高,但開(kāi)銷(xiāo)大,封鎖粒度大則并發(fā)性低但開(kāi)銷(xiāo)小

SQL Server支持的鎖粒度可以分為為行、頁(yè)、鍵、鍵范圍、索引、表或數據庫獲取鎖

資源         描述
RID         行標識符。用于單獨鎖定表中的一行。
鍵           索引中的行鎖。用于保護可串行事務(wù)中的鍵范圍。
頁(yè)           8 千字節 (KB) 的數據頁(yè)或索引頁(yè)。
擴展盤(pán)區     相鄰的八個(gè)數據頁(yè)或索引頁(yè)構成的一組。
表           包括所有數據和索引在內的整個(gè)表。
DB          數據庫。


四  鎖定時(shí)間的長(cháng)短

鎖保持的時(shí)間長(cháng)度為保護所請求級別上的資源所需的時(shí)間長(cháng)度。

用于保護讀取操作的共享鎖的保持時(shí)間取決于事務(wù)隔離級別。采用 READ COMMITTED 的默認事務(wù)隔離級別時(shí),只在讀取頁(yè)的期間內控制共享鎖。在掃描中,直到在掃描內的下一頁(yè)上獲取鎖時(shí)才釋放鎖。如果指定 HOLDLOCK 提示或者將事務(wù)隔離級別設置為 REPEATABLE READ 或 SERIALIZABLE,則直到事務(wù)結束才釋放鎖。

根據為游標設置的并發(fā)選項,游標可以獲取共享模式的滾動(dòng)鎖以保護提取。當需要滾動(dòng)鎖時(shí),直到下一次提取或關(guān)閉游標(以先發(fā)生者為準)時(shí)才釋放滾動(dòng)鎖。但是,如果指定 HOLDLOCK,則直到事務(wù)結束才釋放滾動(dòng)鎖。

用于保護更新的排它鎖將直到事務(wù)結束才釋放。
如果一個(gè)連接試圖獲取一個(gè)鎖,而該鎖與另一個(gè)連接所控制的鎖沖突,則試圖獲取鎖的連接將一直阻塞到:

將沖突鎖釋放而且連接獲取了所請求的鎖。

連接的超時(shí)間隔已到期。默認情況下沒(méi)有超時(shí)間隔,但是一些應用程序設置超時(shí)間隔以防止無(wú)限期等待

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
DB2和 Oracle的并發(fā)控制(鎖)比較
SQL優(yōu)化中的重要概念:鎖定
計算機世界網(wǎng)-周報全文-MS SQL Server數據庫事務(wù)鎖機制分析
Mysql的鎖機制解讀
你需要了解關(guān)于MySQL鎖的知識點(diǎn),都列在這里了!
MySQL事務(wù)和鎖——《MySQL DBA工作筆記》
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久