国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-09 09:49:14
文檔

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

SQLServer中TempDB管理(版本存儲區的一個example):我們從一個例子開始來了解版本存儲區。本例中數據庫啟用RCSI(使用行版本控制的已提交讀隔離級別) 和 SI( 快照隔離級別 )。 當數據庫啟用了RCSI或者SI時,每當行有更新時就會創建一個行版本。此行版本在版本存儲器保存到不需要為止。那么SQL Serve
推薦度:
導讀SQLServer中TempDB管理(版本存儲區的一個example):我們從一個例子開始來了解版本存儲區。本例中數據庫啟用RCSI(使用行版本控制的已提交讀隔離級別) 和 SI( 快照隔離級別 )。 當數據庫啟用了RCSI或者SI時,每當行有更新時就會創建一個行版本。此行版本在版本存儲器保存到不需要為止。那么SQL Serve

我們從一個例子開始來了解版本存儲區。本例中數據庫啟用RCSI(使用行版本控制的已提交讀隔離級別) 和 SI( 快照隔離級別 )。 當數據庫啟用了RCSI或者SI時,每當行有更新時就會創建一個行版本。此行版本在版本存儲器保存到不需要為止。那么SQL Server什么時候

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

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

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

createdatabasesnapshottest

go

-- Setting databaseforsnapshot based isolations. AS you can

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

alterdatabase snapshottest setread_committed_snapshotON

go

alterdatabase snapshottest setallow_snapshot_isolationON

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

fromsys.databases

where name='snapshottest'

go

--create a table with each row > 1000 bytes

createtable 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

insertinto t_version values (@i,'hello')

set @i = @i + 1

end

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

selectCOUNT(*)fromsys.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

selectCOUNT(*)fromsys.dm_tran_version_store

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

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

selectCOUNT(*)fromsys.dm_tran_version_store

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

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

SQLServer中TempDB管理(版本存儲區的一個example):我們從一個例子開始來了解版本存儲區。本例中數據庫啟用RCSI(使用行版本控制的已提交讀隔離級別) 和 SI( 快照隔離級別 )。 當數據庫啟用了RCSI或者SI時,每當行有更新時就會創建一個行版本。此行版本在版本存儲器保存到不需要為止。那么SQL Serve
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产成人无精品久久久久国语 | 亚洲国产欧美自拍 | 亚洲高清视频在线观看 | 国产欧美日韩在线 | 国内一级一级毛片a免费 | 成a人片亚洲日本久久 | 日本另类αv欧美另类aⅴ | 精品视频一区二区三区四区 | 久久久视| 91色老99久久九九爱精品 | 色老头久久久久 | 久久久久9999 | 国产激情在线观看 | 日韩视频一区二区三区 | 欧美在线观看视频 | 青青草国产在线视频 | 国产精品免费看 | 中文字幕日本一本二本三区 | 制服丝袜先锋影音 | 国产精品26p | 亚洲欧美在线观看一区二区 | 国产资源网站 | 日韩欧美一二区 | 国产欧美在线视频免费 | 欧美一级网站 | 欧美2区 | 国产精品久久二区三区色裕 | 欧美日本在线 | 国产成人精品免费视频大全可播放的 | 亚洲福利网站 | 国产a国产片 | 青青色在线视频 | 亚洲视频在线观看免费 | 日韩精品第一 | 亚洲第一导航 | 欧美中文日韩 | 免费看黄色毛片 | 国产精品成 | 久久精品a一国产成人免费网站 | 亚洲欧美日韩专区 | 五十路亲子中出在线观看 |