freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

服務(wù)器和應(yīng)用系統(tǒng)遷移方案-資料下載頁

2025-05-04 12:42本頁面
  

【正文】 stCDC中看到有一些新的表被創(chuàng)建了,分別是ddl_history,change_tables,captured_columns,index_columns和lsn_time_mapping,并且這5張表都是在cdc架構(gòu)下。然后在TestCDC數(shù)據(jù)庫中創(chuàng)建測試表USETestCDCGOCREATETABLE(ProductIDintPRIMARYKEYNOTNULL,ProductNamenvarchar(100),Categorynvarchar(50))GOEXECsp_cdc_enable_table_change_data_capture39。dbo39。,39。Product39。,@role_name=NULL,@supports_net_changes=1。成功提交上述命令后,就可以在數(shù)據(jù)表change_tables,captured_columns和index_columns表中看到相應(yīng)的記錄,其中change_table中一條,capture_column中三條,index_columns中一條。同時cdc架構(gòu)下有增加了一張新表叫做dbo_Product_CT,這張表的結(jié)構(gòu)和Product表的結(jié)構(gòu)有點(diǎn)相似,Product表中的三列在dbo_Product_CT中都有,同時dbo_Product_CT表中還增加了_$start_lsn,_$end_lsn,_$seqval,_$operation和_$update_mask五個新的字段。hU:iB%P%Bamp。X其實(shí)在存儲過程sp_cdc_enable_table_change_data_capture中有一系列的參數(shù),在這里我們?yōu)榱撕喕雎粤艘粋€參數(shù)就是@captured_column_list,這個參數(shù)可以對表中特定的某些字段啟用更新跟蹤。在Product表上提交INSERT語句INSERTINTOVALUES(1,N39。ABC39。,N39。A39。)。提交完了這條命令后,就會在lsn_time_mapping和dbo_Product_CT中分別看到一條新記錄。其中dbo_Product_CT表中的_$operation字段的值是2,_$update_mask字段的值是0x07。_$operation字段是代表DML操作類型,1是delete,2是insert,3是update的舊值,4是update的新值。$update_mask字段是表示一個字段列表的掩碼,那些在DML操作中被更新了的字段位為1,而沒有更新的字段位為0。在本例中Product表一共有三列被跟蹤,所以應(yīng)該是一個三位的二進(jìn)制數(shù),右邊低位第一位是第一列ProductID,低位第二位是第二列ProductName,第三位就是Category了。因?yàn)檫@是一次INSERT,所以更新涉及到了所有的三列,所以_$update_mask字段就應(yīng)該是0x7了。繼續(xù)在Product表上提交UPDATE語句UPDATESETCategory=N39。B39。WHEREProductID=1。提交完這條命令后,當(dāng)然也會在lsn_time_mapping和dbo_Product_CT中看到新記錄了。不過這次lsn_time_mapping中是一條,而dbo_Product_CT中則是兩條。(為什么會這樣呢?建議大家自己試一下咯,一試就明白了。)其中dbo_Product_CT表中的_$operation字段的值是第一條是3,第二條是4,_$update_mask字段的值兩條都是0x04。在這次操作中我們更新的是第三列,所以_$update_mask字段就應(yīng)該是0x4了。(如果我們更新的是ProductID會發(fā)現(xiàn)_$update_mask并非是0x1,而同樣是0x7,這估計是因?yàn)镻roductID是主鍵,更新主鍵應(yīng)該視同一條新的記錄。)再來一次UPDATEUPDATESETCategory=N39。A39。WHEREProductID=1。提交完這條命令后,在dbo_Product_CT中又看到兩條新記錄了。其中dbo_Product_CT表中的_$operation字段的值是第一條是3,第二條是4,_$update_mask字段的值兩條都是0x04。(看來CDC確實(shí)會記錄下數(shù)據(jù)的每次修改。)繼續(xù)在Product表上提交DML語句DELETEWHEREProductID=1。提交完了這條命令后,就會在lsn_time_mapping和dbo_Product_CT中分別看到一條新記錄。其中dbo_Product_CT表中的_$operation字段的值是1,_$update_mask字段的值是0x07。提交一個DDL試試看ALTERTABLEADDDescriptionnvarchar(100)。提交完這句命令后,只會在ddl_history表中看到一條新的記錄。然后再試試DMLUPDATESETDescription=N39。NA39。提交完這句語句后,所有cdc架構(gòu)下的表中都沒有看到新記錄。說明新增的列Description不跟蹤更新了......估計有人會說(細(xì)心的人哦!):“這次當(dāng)然看不到新記錄了,因?yàn)樵谇懊娴?步我們已經(jīng)刪除了所有的記錄,因此這次的UPDATE語句沒有影響到任何記錄,當(dāng)然CDC的表中不會有任何記錄了?!蹦敲吹降讓escription更新會不會記錄呢,經(jīng)過測試確實(shí)是不記錄的。那么如果我們想對Description也進(jìn)行更新跟蹤應(yīng)該怎么辦呢?很簡單的,由另外一個存儲過程叫做sp_cdc_disable_table_change_data_capture可以禁用對某張表的更新跟蹤,可以使用這個存儲過程先對Product表禁用更新跟蹤,然后再重新啟用對Product表的更新跟蹤就可以了。1最后試一下DROP命令DROPTABLE12.評估結(jié)束。一定有人問,捕獲到的更新怎么用呢,還有一堆系統(tǒng)函數(shù)和存儲過程可以幫助用戶,但是那段測試的過程就不詳細(xì)寫了。,這兩個函數(shù)可以幫助我們獲取dbo_Product_CT表中數(shù)據(jù),,在精簡的更新中有一些重復(fù)的更新就會被合并成一條記錄,比如說我們把產(chǎn)品類型由A改為B,然后又改回A。兩個函數(shù)的范例如下(你會發(fā)現(xiàn)精簡結(jié)果集的函數(shù)運(yùn)算相當(dāng)慢,至少在CTP4中是這樣的,不知道以后的版本會不回有改進(jìn)):SELECT*FROM(0x00000048000001760004,0x00000048000001F70004,39。all39。)。SELECT*FROM(0x00000048000001760004,0x00000048000001F70004,39。all39。)。CDC功能的IO開銷很明顯,CDC功能是會產(chǎn)生一定的IO和存儲開銷的,為了評估CDC功能產(chǎn)生的這些開銷。我又進(jìn)行了一段評測。整個評估的思路是這樣的:創(chuàng)建兩個數(shù)據(jù)庫在兩個數(shù)據(jù)庫中分別創(chuàng)建一張結(jié)構(gòu)完全相同的表,一個數(shù)據(jù)庫啟用CDC功能,而另外一個禁用CDC功能向兩張表中寫入相同行數(shù)的數(shù)據(jù)利用sysindexes來獲得兩個數(shù)據(jù)庫中數(shù)據(jù)表的存儲消耗情況因?yàn)槭窃谔摂M機(jī)中進(jìn)行的測試,所以選取了比較小的數(shù)據(jù)表(AdventureWorks數(shù)據(jù)庫中的SalesOrderDetails),大約有12萬行數(shù)據(jù)。評估的結(jié)果如下:圖2從上面兩張表中可以看到,CDC激活后日志文件的讀會顯著增加。原因是CDC在寫更新跟蹤表時,需要讀取日志。圖3圖4從上面兩張表中可以看到激活CDC后數(shù)據(jù)文件的寫入和日志文件寫入都會顯著增加,不過需要考慮到CDC激活后會需要多寫一張表,在本例中就是dbo_SalesOrderDetails_CT,所以這種增加是可以理解的。當(dāng)然在生產(chǎn)環(huán)境中并不會對數(shù)據(jù)表的所有列進(jìn)行CDC監(jiān)控,所以激活CDC對IO寫入的影響還需要針對不同情況進(jìn)行分析。圖5從上面這張圖可以看出,CDC激活后會生產(chǎn)數(shù)據(jù)表不會消耗更多的存儲空間,但是更新跟蹤表會需要俄外的存儲空間。另外可以發(fā)現(xiàn)的一點(diǎn)是,在本例中dbo_SalesOrderDetail_CT表消耗的空間比SalesOrderDetail表多,這是因?yàn)樵赿bo_SalesOrderDetail_CT表中加入了一些額外的字段,例如_$start_lsn和_$end_lsn,同時注意觀察dbo_SalesOrderDetail_CT表會發(fā)現(xiàn),SQLServer在這張表上使用_$start_lsn、_$end_lsn和_$seqval三個字段作為聚簇索引,而SalesOrderDetail表上原來的聚簇索引(SalesOrderID,SalesOrderDetailID)再加上_$start_lsn、_$end_lsn和_$seqval三個字段則被創(chuàng)建為一個非聚簇索引,所以這就導(dǎo)致了dbo_SalesOrderDetail_CT表需要消耗比原始表更多的空間,不過原始數(shù)據(jù)表上的非聚簇索引不會在CDC跟蹤表上被創(chuàng)建,這也就說明了原始數(shù)據(jù)表聚簇索引的大小也會對CDC引發(fā)的IO產(chǎn)生影響。CDC對存儲的消耗為了進(jìn)一步理解CDC功能對存儲的消耗,特別整理了一下CDC的數(shù)據(jù)開銷。,這里簡稱為表1和表2。下面是對表1和表2作的一些較為深入地剖析:表1和表2的數(shù)據(jù)表1主要由3個binary(10)字段、1個int字段、1個varbinary(128)字段以及所有被選定更新跟蹤的原始表字段構(gòu)成。因此表1每行數(shù)據(jù)的尺寸大概是在30+4+5(因?yàn)橥ǔR粡埍硇枰O(jiān)控的字段會在16個以內(nèi),所以暫定為2bytes的binary然后加上varbinary數(shù)據(jù)2個bytes的固定開銷),也就是39+x(假定原始表需要監(jiān)控的字段鍵總尺寸為x個字節(jié))個字節(jié)。表2則有1個binary(10)字段、2個datetime字段和1個varbinary(10)字段構(gòu)成。因此表2每行數(shù)據(jù)應(yīng)該是20+16+12=48個字節(jié)。表1和表2的索引(這個不太好估算,因?yàn)椴煌谋砭鄞厮饕逆I值密度是不一樣的,一般按照1/4的數(shù)據(jù)尺寸估算,只有多沒有少啦!)表1的3個binary(10)字段構(gòu)成了聚簇索引,同時3個binary(10)字段加上原始數(shù)據(jù)表的聚簇索引構(gòu)成一個非聚簇索引,同上面一樣,我們假定原始表聚簇索引鍵是x個字節(jié),那么表1的非聚簇索引每行是(30+y(假定原始表聚簇索引鍵尺寸為y個字節(jié))+4(指向聚簇索引的內(nèi)部指針))個字節(jié)。而表2中的binary(10)字段構(gòu)成了聚簇索引,其中1個datetime字段構(gòu)成了非聚簇索引。因此表2的非聚簇索引每行是8+4=12個字節(jié)。對原始數(shù)據(jù)表的一行數(shù)據(jù)進(jìn)行UPDATE操作,會在表1中添加2行數(shù)據(jù),而DELETE操作和INSERT操作則會增加1行數(shù)據(jù);而對于表2則是每筆事務(wù)增加1行數(shù)據(jù)。因此我們作如下假定,典型的OLTP環(huán)境:原始數(shù)據(jù)表的聚簇索引為1個整型字段,同時需要監(jiān)控的字段總尺寸為50字節(jié)(約為5個decimal(19)或5個char(10))。對原始表提交100,000個事務(wù)。產(chǎn)生1,000,000行次數(shù)據(jù)操作,其中UPDATE占60%,INSERT和DELETE占40%。那么最終CDC產(chǎn)生的額外數(shù)據(jù)存儲空間應(yīng)該為(39+4+50)*(1000000*+1000000*)+48*100000=153,600,000個字節(jié),約為164MB(假定數(shù)據(jù)頁填充率為90%)。因此約合200MB左右。經(jīng)過這樣的對比我們可以知道,CDC在生產(chǎn)環(huán)境特別是OLTP環(huán)境對存儲空間的影響不算太明顯的,當(dāng)然這個還要取決于DBA在原始數(shù)據(jù)表上選取多少字段進(jìn)行監(jiān)控,以及這些字段的數(shù)據(jù)尺寸,同時還有原始數(shù)據(jù)表的聚簇索引鍵值密度。另外需要說明的是表1和表2都是由一個異步的進(jìn)程通過讀取日志來完成的,因此表1和表2的數(shù)據(jù)刷新和原始數(shù)據(jù)表的刷新會有一定的延時。對部署CDC的建議,經(jīng)過以上測試,我們可以發(fā)現(xiàn)以下情況:◆CDC激活會顯著增加日志文件的讀操作。◆CDC激活后更新跟蹤表會產(chǎn)生額外的寫入,并消耗存儲空間?!鬋DC激活后,原數(shù)據(jù)表的聚簇索引尺寸會影響到CDC產(chǎn)生的IO數(shù)據(jù)量,而原始數(shù)據(jù)表上的非聚簇索引則不會?!鬋DC激活后,被選定進(jìn)行更新跟蹤的列鍵值屬性同樣會影響到CDC產(chǎn)生的IO數(shù)據(jù)量和存儲空間。因此如同微軟建議的一樣,在CDC激活的環(huán)境下,應(yīng)該將更新跟蹤表寫入與原始表不同的文件組并存放在不同的存儲設(shè)備上,注意控制需要監(jiān)控的數(shù)據(jù)列尺寸,同時應(yīng)該注意為日志文件選取可提高讀取性能的存儲硬件上,比如RAID10。1. 若不給自己設(shè)限,則人生中就沒有限制你發(fā)揮的藩籬。2. 若不是心寬似海,哪有人生風(fēng)平浪靜。在紛雜的塵世里,為自己留下一片純靜的心靈空間,不管是潮起潮落,也不管是陰晴圓缺,你都可以免去浮躁,義無反顧,勇往直前,輕松自如地走好人生路上的每一步3. 花一些時間,總會看清一些事。用一些事情,總會看清一些人。有時候覺得自己像個神經(jīng)病。既糾結(jié)了自己,又打擾了別人。努力過后,才知道許多事情,堅(jiān)持堅(jiān)持,就過來了。4. 歲月是無情的,假如你丟給它的是一片空白,它還給你的也是一片空白。歲月是有情的,假如你奉獻(xiàn)給她的是一些色彩,它奉獻(xiàn)給你的也是一些色彩。你必須努力,當(dāng)有一天驀然回首時,你的回憶里才會多一些色彩斑斕,少一些蒼白無力。只有你自己才能把歲月描畫成一幅難以忘懷的人生畫卷。學(xué)習(xí)參考
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1