日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL Server 2005使用基于行版本控制的隔離級(jí)別初探(3) -- SNAPSHOT

瀏覽:305日期:2023-11-01 09:52:49

回顧一下SNAPSHOT的構(gòu)架:

SNAPSHOT隔離就像真實(shí)的快照,它會(huì)無(wú)視涉及行的變化。在SNAPSHOT隔離下運(yùn)行的事務(wù)將讀取數(shù)據(jù),然后由另一事務(wù)修改此數(shù)據(jù)。SNAPSHOT事務(wù)不阻塞由其他事務(wù)執(zhí)行的更新操作,它忽略數(shù)據(jù)的修改繼續(xù)從版本化的行讀取數(shù)據(jù)。但是,當(dāng)快照事務(wù)嘗試修改已由其他事務(wù)修改的數(shù)據(jù)時(shí),SNAPSHOT事務(wù)將生成錯(cuò)誤并終止.

相比READ_COMMITTED_SNAPSHOT,SNAPSHOT真正做到了快照隔離,完全無(wú)視數(shù)據(jù)的更新。相對(duì)READ_COMMITTED_SNAPSHOT,它更進(jìn)一步減輕了對(duì)鎖的依賴,在性能方面獲得了更大的優(yōu)勢(shì)。不可避免的是,SNAPSHOT的事務(wù)性也變得更差,但是,至少,它比NoLock要好。^_^

SNAPSHOT的限制:

SNAPSHOT比READ_COMMITTED_SNAPSHOT更快,但是壞消息是它的限制也多。

1.快照隔離不支持分布式事務(wù),包括分布式分區(qū)數(shù)據(jù)庫(kù)中的查詢。

2.SQL Server 不會(huì)保留多個(gè)版本的系統(tǒng)元數(shù)據(jù)。表中的數(shù)據(jù)定義語(yǔ)言 (DDL) 語(yǔ)句和其他數(shù)據(jù)庫(kù)對(duì)象(索引、視圖、數(shù)據(jù)類型、存儲(chǔ)過(guò)程和公共語(yǔ)言運(yùn)行時(shí)函數(shù))會(huì)更改元數(shù)據(jù)。如果 DDL 語(yǔ)句修改一個(gè)對(duì)象,那么在快照隔離下對(duì)該對(duì)象的任何并發(fā)引用都將導(dǎo)致快照事務(wù)失敗。READ_COMMITTED_SNAPSHOT 數(shù)據(jù)庫(kù)選項(xiàng)為 ON 時(shí),已提交讀事務(wù)沒有此限制。例如,數(shù)據(jù)庫(kù)管理員執(zhí)行下面的 ALTER INDEX 語(yǔ)句。 USE AdventureWorks;

GO

ALTER INDEX AK_Employee_LoginID

ON HumanResources.Employee REBUILD;

GO

執(zhí)行 ALTER INDEX 語(yǔ)句后,任何在執(zhí)行 ALTER INDEX 語(yǔ)句時(shí)處于活動(dòng)狀態(tài)的快照事務(wù),如果試圖引用 HumanResources.Employee 表,都將收到錯(cuò)誤。而使用行版本控制的已提交讀事務(wù)不受影響。

3.BULK INSERT 操作可能會(huì)導(dǎo)致對(duì)目標(biāo)表元數(shù)據(jù)的更改(例如,禁用約束檢查時(shí))。如果出現(xiàn)這種情況,訪問(wèn)大容量插入表的并發(fā)快照隔離事務(wù)將失敗。

設(shè)置SNAPSHOT:

設(shè)置SNAPSHOT隔離模式也很簡(jiǎn)單,只要我們簡(jiǎn)單的一步操作就可以實(shí)現(xiàn)。

ALTER DATABASE DATABASE_NAMESET ALLOW_SNAPSHOT_ISOLATION ON;

但是要注意:如果 ALLOW_SNAPSHOT_ISOLATION 數(shù)據(jù)庫(kù)選項(xiàng)設(shè)置為 ON,則數(shù)據(jù)庫(kù)中數(shù)據(jù)已修改的所有活動(dòng)事務(wù)完成之前,Microsoft SQL Server Database Engine 實(shí)例不會(huì)為已修改的數(shù)據(jù)生成行版本。如果存在活動(dòng)的修改事務(wù),SQL Server 將把該選項(xiàng)的狀態(tài)設(shè)置為 PENDING_ON。所有修改事務(wù)完成后,該選項(xiàng)的狀態(tài)更改為 ON。在該選項(xiàng)完全處于 ON 狀態(tài)之前,用戶無(wú)法在數(shù)據(jù)庫(kù)中啟動(dòng)快照事務(wù)。數(shù)據(jù)庫(kù)管理員將 ALLOW_SNAPSHOT_ISOLATION 選項(xiàng)設(shè)置為 OFF 后,數(shù)據(jù)庫(kù)將跳過(guò) PENDING_OFF 狀態(tài)。

下面是ALLOW_SNAPSHOT_ISOLATION 選項(xiàng)的各個(gè)狀態(tài)當(dāng)前數(shù)據(jù)庫(kù)的快照隔離框架狀態(tài)說(shuō)明OFF未啟用對(duì)快照隔離事務(wù)的支持。不允許執(zhí)行快照隔離事務(wù)。PENDING_ON對(duì)快照隔離事務(wù)的支持處于轉(zhuǎn)換狀態(tài)(從 OFF 到 ON)。打開的事務(wù)必須完成。

不允許執(zhí)行快照隔離事務(wù)。ON已啟用對(duì)快照隔離事務(wù)的支持。

允許執(zhí)行快照事務(wù)。PENDING_OFF對(duì)快照隔離事務(wù)的支持處于轉(zhuǎn)換狀態(tài)(從 ON 到 OFF)。

此后啟動(dòng)的快照事務(wù)無(wú)法訪問(wèn)此數(shù)據(jù)庫(kù)。更新事務(wù)仍會(huì)導(dǎo)致此數(shù)據(jù)庫(kù)中出現(xiàn)版本控制開銷。現(xiàn)有快照事務(wù)仍可以訪問(wèn)此數(shù)據(jù)庫(kù),不會(huì)遇到任何問(wèn)題。直到數(shù)據(jù)庫(kù)快照隔離狀態(tài)為 ON 時(shí)處于活動(dòng)狀態(tài)的所有快照事務(wù)完成后,狀態(tài) PENDING_OFF 才變?yōu)?OFF。

SNAPSHOT的使用:

下面是使用READ_COMMITTED_SNAPSHOT的一個(gè)例子: 在快照隔離下運(yùn)行的事務(wù)可以訪問(wèn)數(shù)據(jù)庫(kù)中為快照啟用的表。若要訪問(wèn)沒有為快照啟用的表,則必須更改隔離級(jí)別。例如,下面的代碼示例顯示了在快照事務(wù)下運(yùn)行時(shí)聯(lián)接兩個(gè)表的 SELECT 語(yǔ)句。一個(gè)表屬于未啟用快照隔離的數(shù)據(jù)庫(kù)。當(dāng) SELECT 語(yǔ)句在快照隔離下運(yùn)行時(shí),該語(yǔ)句無(wú)法成功執(zhí)行。SET TRANSACTION ISOLATION LEVEL SNAPSHOT;

BEGIN TRAN

SELECT t1.col5, t2.col5

FROM Table1 as t1

INNER JOIN SecondDB.dbo.Table2 as t2

ON t1.col1 = t2.col2;

下面的代碼示例顯示了已修改為從事務(wù)隔離級(jí)別更改為已提交讀隔離級(jí)別的相同 SELECT 語(yǔ)句。由于此更改,SELECT 語(yǔ)句將成功執(zhí)行。

SET TRANSACTION ISOLATION LEVEL SNAPSHOT;

BEGIN TRAN

SELECT t1.col5, t2.col5

FROM Table1 as t1

WITH (READCOMMITTED)

INNER JOIN SecondDB.dbo.Table2 as t2

ON t1.col1 = t2.col2;

SNAPSHOT的演示:

在此示例中,在快照隔離下運(yùn)行的事務(wù)將讀取數(shù)據(jù),然后由另一事務(wù)修改此數(shù)據(jù)??煺帐聞?wù)不阻塞由其他事務(wù)執(zhí)行的更新操作,它忽略數(shù)據(jù)的修改繼續(xù)從版本化的行讀取數(shù)據(jù)。但是,當(dāng)快照事務(wù)嘗試修改已由其他事務(wù)修改的數(shù)據(jù)時(shí),快照事務(wù)將生成錯(cuò)誤并終止。

在會(huì)話 1 上:

USE AdventureWorks;GO

--在數(shù)據(jù)庫(kù)上開啟snapshot隔離級(jí)別.ALTER DATABASE AdventureWorksSET ALLOW_SNAPSHOT_ISOLATION ON;GO

-- 開始一個(gè)snapshot事務(wù)SET TRANSACTION ISOLATION LEVEL SNAPSHOT;GOBEGIN TRANSACTION;

--選擇EmployeeID號(hào)為4的員工的休假資料SELECT EmployeeID, VacationHoursFROM HumanResources.EmployeeWHERE EmployeeID = 4;

在會(huì)話 2 上:USE AdventureWorks;GO

-- 開始一個(gè)事務(wù)BEGIN TRANSACTION;

--我們修改了EmployeeID為4的員工的休假資料UPDATE HumanResources.EmployeeSET VacationHours = VacationHours - 8WHERE EmployeeID = 4;

-- 確認(rèn)下現(xiàn)在EmployeeID為4的員工的休假資料SELECT VacationHoursFROM HumanResources.EmployeeWHERE EmployeeID = 4;

在會(huì)話 1 上:

--因?yàn)闀?huì)話二的事務(wù)沒有提交,--EmployeeID為4的員工的休假資料因該沒變SELECT EmployeeID, VacationHoursFROM HumanResources.EmployeeWHERE EmployeeID = 4;

在會(huì)話 2 上:--提交我們的更新,數(shù)據(jù)被更改了COMMIT TRANSACTION;GO

在會(huì)話 1 上:

--OK,現(xiàn)在看看小4同志的資料,被修改的數(shù)據(jù)被華麗的無(wú)視了SELECT EmployeeID, VacationHoursFROM HumanResources.EmployeeWHERE EmployeeID = 4;

--現(xiàn)在我們也來(lái)嘗試下修改小4同志的資料,--事務(wù)即將崩潰,請(qǐng)系緊安全帶。^_^.UPDATE HumanResources.EmployeeSET SickLeaveHours = SickLeaveHours - 8WHERE EmployeeID = 4;

--ROLLBACK之后小4的數(shù)據(jù)到底是什么?你知道嗎?ROLLBACK TRANSACTIONGO

http://www.cnblogs.com/trisaeyes/archive/2006/12/30/607994.html

日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本中文字幕视频一区| 国产精品免费大片| 欧美一区精品| 久久国产乱子精品免费女| 久久亚洲视频| 亚洲一级淫片| 日本不卡视频一二三区| | 国产精品手机在线播放| 欧美欧美黄在线二区| 日韩在线网址| 国产精品xxx在线观看| 亚洲三级欧美| 日韩午夜精品| 日本麻豆一区二区三区视频| 日韩国产在线不卡视频| 综合亚洲视频| 精品视频自拍| 亚洲一级特黄| 国产精品一区二区av日韩在线| 国产精品主播在线观看| 欧美三级网址| 久久亚洲欧美| 高清一区二区| 美女网站久久| 精品久久久中文字幕| 欧美国产91| 清纯唯美亚洲综合一区| 日韩精品电影| 欧美视频久久| 久久精品123| 综合激情视频| 日本久久黄色| 久久精品99国产精品日本| 99久久婷婷| 欧美经典一区| 中文字幕免费一区二区| 色偷偷偷在线视频播放| 日韩高清不卡一区| 91久久黄色| 国产99在线| 国产亚洲久久| 亚洲最新av| 国产精品嫩草99av在线| 欧美好骚综合网| 日本欧美久久久久免费播放网| 精品国产乱码久久久久久樱花| 男人操女人的视频在线观看欧美 | 亚洲欧美伊人| 国产在线一区不卡| 久久国产尿小便嘘嘘| 日韩一级不卡| 亚洲二区视频| 久久久久网站| 国产在线观看www| 国产精品1luya在线播放| 日本中文字幕一区二区视频| 国产亚洲在线| 亚洲一级淫片| 只有精品亚洲| 午夜影院欧美| 99成人在线| 美女精品在线| 婷婷精品在线| 日韩二区三区四区| 久久99久久人婷婷精品综合| 欧美精品第一区| 国产欧美一区二区三区精品酒店| 成人日韩av| 99精品视频在线观看免费播放| 久久精品高清| 老鸭窝毛片一区二区三区| 亚洲中字黄色| 91精品啪在线观看国产爱臀| 国产精品一区毛片| 精品九九久久| 午夜欧美在线| 亚洲三级毛片| 麻豆91在线播放| 99久精品视频在线观看视频| 国产一区白浆| 国产三级一区| 欧洲一区二区三区精品| 在线亚洲免费| 欧美日韩精品一区二区三区视频 | 欧美伊人久久| 高清久久精品| 男人天堂欧美日韩| 国产欧美一区二区色老头| 日本美女一区| 天堂久久一区| 日韩欧美午夜| 日本一区二区三区中文字幕| av最新在线| 日本高清久久| 久久久亚洲一区| 97久久亚洲| 日韩欧美另类一区二区| 日韩黄色av| 久久天堂精品| 7777精品| 蜜桃一区二区三区| 国产精品久久久一区二区| 亚洲韩日在线| 色综合五月天| 91麻豆精品| 热久久免费视频| 日韩精品一卡| 欧美激情三区| 日韩精彩视频在线观看| 亚洲自啪免费| 久久久一二三| 日韩精品视频中文字幕| 亚洲国产日韩欧美在线| 91中文字幕精品永久在线| 国产精品男女| 日本在线视频一区二区| 9久re热视频在线精品| 亚洲91久久| 欧洲一区二区三区精品| 国产福利一区二区精品秒拍| 亚洲一区欧美| 免费人成网站在线观看欧美高清| 亚洲天堂免费电影| 久久久男人天堂| 黄色网一区二区| 国产一区调教| 久久av网站| 精品国产一区二区三区性色av| 国产精品多人| 国产伦理久久久久久妇女| 日本成人在线网站| 欧美亚洲福利| 久久av网站| 91日韩在线| 日韩视频网站在线观看| 久久蜜桃av| 麻豆91精品| 日韩av网站免费在线| 国产一级成人av| 久久免费影院| 在线天堂中文资源最新版| 欧美日韩中出| 精品理论电影在线| 99精品在线免费在线观看| 午夜在线精品偷拍| 日韩av二区在线播放| 精品久久一区| 樱桃成人精品视频在线播放| 亚洲精品三级| av免费不卡国产观看| 伊人精品一区| 青草av.久久免费一区| 日本精品黄色| 蜜臀av在线播放一区二区三区| 91精品丝袜国产高跟在线| sm捆绑调教国产免费网站在线观看| 国产成人精品一区二区免费看京 | 91精品国产经典在线观看| 国产精品一区二区三区av麻| 国产成人精品999在线观看| 国产在线欧美| 国产精品久久久久久模特| 91精品推荐| 久久精品99国产精品日本| 99精品综合| 国产精品99久久久久久董美香| 麻豆中文一区二区| 欧美日韩四区| 高清av一区| 日韩1区2区日韩1区2区| 欧美亚洲国产激情| 欧美91在线|欧美| 日韩制服丝袜先锋影音| 中文在线免费视频| 国产精品一区二区三区av| 在线综合亚洲| 日韩一区自拍| 国产一区二区三区亚洲| 日本在线观看不卡视频| 日韩午夜精品| 99精品小视频| 国产精品视频一区二区三区| 麻豆精品网站| 一区在线免费观看| 99国产精品一区二区| 国产精品18| 国产激情精品一区二区三区| 天堂va在线高清一区| 丝袜美腿一区二区三区| 在线成人直播| 超碰成人av| 国产欧洲在线| 免费观看亚洲| 精品午夜久久| 国产不卡一区| 福利一区视频| 国产成人精品免费视| 精品国产亚洲一区二区在线观看| 国产精品久久久久久久久久妞妞|