日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sql Server 2005中的快照隔离

發(fā)布時(shí)間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sql Server 2005中的快照隔离 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Sql Server2005提供了兩種基于快照的隔離類型,他們都是利用行版本控制來維護(hù)快照的:
1、已提交讀快照隔離(RCSI),通過修改數(shù)據(jù)庫的一個(gè)選項(xiàng)來啟用
alter database AdventureWorks set READ_COMMITTED_SNAPSHOT on

2、快照隔離(SI),必須在兩個(gè)地方開啟
A、啟用數(shù)據(jù)庫的ALLOW_ISOLATION_SNAPSHOT選項(xiàng)
alter database AdventureWorks set ALLOW_SNAPSHOT_ISOLATION on
B、通過set transaction isolation level 命令為每個(gè)想要使用SI的連接設(shè)置隔離級(jí)別

set transaction isolation level snapshot


觀察數(shù)據(jù)庫的狀態(tài)

目錄視圖sys.databases包含了幾個(gè)報(bào)告數(shù)據(jù)庫快照隔離狀態(tài)的字段.
snapshot_isolation_state字段的可能值是0到4,表示四種可能的SI狀態(tài),而snapshot_isolation_state_desc字段對(duì)每種狀態(tài)作了清晰的說明:
off:數(shù)據(jù)庫關(guān)閉了快照隔離狀態(tài)
in_transition_to_on:數(shù)據(jù)庫正處于開啟SI的中間狀態(tài)
on:SI被開啟
in_transition_to_off:數(shù)據(jù)庫正處于關(guān)閉SI的中間狀態(tài)而不能啟動(dòng)新的快照事務(wù)

數(shù)據(jù)庫選項(xiàng)read_committed_snapshot可能的狀態(tài)值
0:關(guān)閉
1:開啟

并發(fā)模型的選擇

悲觀并發(fā)控制時(shí)Sql Server2005中的默認(rèn)設(shè)置,也是所有早期版本的唯一選擇。事務(wù)的行為是由加鎖來保證的,而付出的代價(jià)是產(chǎn)生較多的阻塞。在訪問同一數(shù)據(jù)資源時(shí),讀者和寫者之間會(huì)互相阻塞。由于Sql Server最初是為使用悲觀并發(fā)而設(shè)計(jì)的,用戶應(yīng)該在證明樂觀并發(fā)確實(shí)對(duì)應(yīng)用程序更有用的前提下才考慮使用

在大多數(shù)情況下,基于下列原因RCSI比SI更受歡迎:
1、RCSI比SI占用更少的tempdb空間
2、RCSI支持分布式事務(wù),而SI不支持
3、RCSI不會(huì)產(chǎn)生更新沖突
4、RCSI無需再應(yīng)用程序端作任何修改。唯一要更改的只是一個(gè)數(shù)據(jù)庫選項(xiàng)

可以考慮在下列情況中使用SI:
1、不太可能由于更新沖突而導(dǎo)致事務(wù)必須回滾得情況
2、需要基于運(yùn)行時(shí)間長(zhǎng)、能保證時(shí)間點(diǎn)一致性的多語句來生成報(bào)表的情況


樂觀并發(fā)控制的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
1、select 操作無需獲取共享鎖,因此讀者和寫者之間不會(huì)互相阻塞
2、所有的select會(huì)得到一個(gè)始終如一的數(shù)據(jù)快照
3、與悲觀并發(fā)相比,鎖的需求總量大大減少了,因而將節(jié)約更多系統(tǒng)開銷
4、Sql Server會(huì)執(zhí)行較少的鎖升級(jí)
5、發(fā)生死鎖的可能性較小

缺點(diǎn):
1、當(dāng)需要掃描一個(gè)很長(zhǎng)的版本鏈時(shí),select語句的性能會(huì)有所下降
2、行版本控制需要tempdb數(shù)據(jù)庫中的額外數(shù)據(jù)
3、只要數(shù)據(jù)庫啟用了基于快照隔離級(jí)別的某一種時(shí),更新和刪除操作都必須產(chǎn)生行版本
4、需要為每個(gè)受到影響的行增加大小為14個(gè)字節(jié)的行版本控制信息
5、更新操作的性能可能會(huì)因?yàn)榫S護(hù)行版本而變差
6、使用SI模式的更新操作可能會(huì)因?yàn)闆_突檢測(cè)而被回滾
7、必須小心地控制tempdb的空間

轉(zhuǎn)載于:https://www.cnblogs.com/Spring/archive/2008/08/21/1272685.html

總結(jié)

以上是生活随笔為你收集整理的Sql Server 2005中的快照隔离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。