欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SQL Server中TempDB管理(版本存儲區的一個exam

系統 1941 0
原文: SQL Server中TempDB管理(版本存儲區的一個example)

原文來自:

http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/

http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/12/31/managing-tempdb-in-sql-server-tempdb-basics-version-store-simple-example.aspx

我們從一個例子開始來了解版本存儲區。本例中數據庫啟用RCSI(使用行版本控制的已提交讀隔離級別)和SI(快照隔離級別)。

當數據庫啟用了RCSI或者SI時,每當行有更新時就會創建一個行版本。此行版本在版本存儲器保存到不需要為止。那么SQL Server什么時候不再保存這個行版本呢?您可能聯想到一些相關的問題,比如,如果不回收(刪除)行版本會有什么影響?一次回收一個還是一組行版本?每個用戶表都有不同的結構,那么SQL Server是不是分別存儲每個表的行版本的?行版本控制的開銷大不大?

首先,我們創建一個數據庫并開啟SI/RCSI

create ? database ? snapshottest

go

?

-- S etting? database ? for ? snapshot ?based isolations. AS you can

-- see that enabling SI/RCSI is a simple DDL operation.

alter ? database ?snapshottest? set ? read_committed_snapshot ? ON

go

?

alter ? database ?snapshottest? set ? allow_snapshot_isolation ? ON

go

?

-- check the snapshot state of the database and it will

-- show that both SI and RCSI have been enabled.

select ??is_read_committed_snapshot_on ,

? ??snapshot_isolation_state_desc ,

????????snapshot_isolation_state

from ? sys . databases

where ?name = 'snapshottest'

go

?

--create a table with each row > 1000 bytes

create ? table ??t_version ? ( c1? int , ?c2? char ( 1000 ))

go

?

--Load 50 rows. Note,I start the transaction but did not

--commit it yet.

Begin tran

declare ?@i? int

select ?@i? = ?0

while? ( @i? < ?50 )

begin

insert ? into ?t_version? values? ( @i , ? 'hello' )

set ?@i? = ?@i? + ?1

end

?

接下來可以通過DMV查看版本存儲區,你會發現顯示版本存儲區行數為0,這是我們實驗的第一個結論,插入(Insert)命令不會產生行版本,因為根本沒有之前的版本可言(有一個特例使插入產生行版本,我們將稍后討論)。這同時意味著批量導入也不會產生行版本。

select ? COUNT (*) ? from ? sys . dm_tran_version_store

-- Now commit the transaction

commit

?

接下來讓我們更新表格中的前50行。因為行數據被更新了,SQL Server將復制舊版本進入版本存儲區。所以版本存儲區中將有50行行版本。

-- update all the rows in the table

update ?t_version? set ?c2? = 'test10'

?

-- the following statement returns the count of versioned row.

-- And, for the case here, it will return 50

select ? COUNT (*) ? from ? sys . dm_tran_version_store

?

請注意,我們沒有使用顯式事務,因此這個Update語句是一個隱式事務,并且是這個隱式事務中唯一的語句。同時沒有并發的事務需要使用行版本,所以這些行版本會被SQL Server當做垃圾數據處理。如果過幾分鐘在運行下面語句,就能發現行版本被回收處理了。

?

-- the following statement returns 0 if run after a minute or so

select ? COUNT (*) ? from ? sys . dm_tran_version_store

?????????SQL Server根據事務狀態判斷版本是否不再需要,從而決定垃圾處理該版本。在最差的情況下,如果有一個長事務正在運行,而且這個長事務要么創建了行版本要么需要用到它,那么這個行版本就不能被刪除,版本存儲區就會一直增長甚至會用盡TempDb的空間,就像長事務可以用盡事務日志空間一樣。關于這一點我們會在稍后詳述。

?????????和UPDATE操作一樣,如果行被刪除也會創建行版本。

?

SQL Server中TempDB管理(版本存儲區的一個example)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人欧美日韩视频一区 | 日韩福利| 免费黄色日韩电影 | 高清国产一区二区三区四区五区 | 永久免费av | 精品视频手机在线观看免费 | 亚洲一区二区三区深夜天堂 | 久久综合伊人 | 久精品视频 | 美女在线视频一区二区 | 国产成人综合AV在线观看不止 | 欧美精品免费xxxxx视频 | 国产精品尤物在线 | 日韩欧美中文字幕在线播放 | 亚洲国产日本 | 天天干天天天天 | 日韩av在线中文字幕 | 97国产在线播放 | 日韩高清中文字幕 | 国产精品久久久久无码av | 国产成人精品免费久久久久 | 2021精品国产综合久久 | 新超碰97| 一区二区三区四区视频 | 三级成人在线 | 五月婷婷久久草丁香 | 奇米色第四色 | 偷拍小美女洗澡在线播放 | 精品亚洲国产成av人片传媒 | 亚洲一区二区在线 | 国产成人无码区免费内射一片色欲 | 私房色播 | 亚洲成人精品久久久 | 2022国产成人福利精品视频 | 日韩欧美一二三区 | 欧美成人精品一区二区三区 | 欧美123 | 久草中文在线观看 | 国产成人无码区免费内射一片色欲 | 精品国产黄a∨片高清在线 亚洲3atv精品一区二区三区 | 国产成人一区二区三区 |