也就是說SSIS預設是幫你開啟快取的,這跟2000的DTS剛好相反喔,自己拉一個[查閱]轉換來看看囉,如上圖,屬性的CacheType預設是用完整快取的喔!各位看圖上似乎有三個選擇,這各部分線上叢書裡也有提到
參考資料集所需的記憶體可利用下列方式配置:
- 全部預先快取,如此會在處理輸入之前先讀取完整的參考資料集。
- 部份快取,轉換會指定隨參考資料載入的快取大小。此選項只有在使用支援索引鍵存取的連接時才提供。
- 無快取,如此會按照資料列集中的各資料列存取參考資料集。
假使你的來源就算只有兩筆資料好了,可是你查閱的參考資料表有千萬筆,那在執行查閱時,在執行前階段就會主動幫你把完整的資料快取起來,千萬筆資料耶,我自己測試的結果,一千多萬筆資料就把我剩餘的5G記憶體耗盡了,問題是快取都還沒完成耶,想當然封裝就失敗啦,所以遇到大型資料表,別用預設的選項吧,最好把快取關掉!
若你使用預設的選項,執行中可以去看"進度"或執行完去看"執行結果",應該可以看到如下的內容,表示它真的幫你完整快取了
[DTS.Pipeline] 資訊: 正在開始執行前階段。
進度: 執行前 - 0 百分比完成
進度: 執行前 - 33 百分比完成
[查閱 [662]] 資訊: 元件 "查閱" (662) 已快取 910 個資料列。
[查閱 [662]] 資訊: 元件 "查閱" (662) 已快取 3380650 個資料列。
[查閱 [662]] 資訊: 元件 "查閱" (662) 已快取 6172530 個資料列。
[查閱 [662]] 資訊: 元件 "查閱" (662) 已快取 6621160 個資料列。
...
2.部分快取與無快取:在網路上看到是有人提到,當你查閱的參考資料只佔總參考資料表的一小部分,就選用部分快取吧﹔然後無快取是比較不建議的。不過我覺得這兩種很像啦,差別在哪老實說我試不太出來,部分快取還得配合記憶體限制,設的不恰當,根本就不幫你預先快取,還是直接存取資料庫啊,跟無快取沒兩樣,我個人是認為這兩種你得自己親自試試才比較清楚差別在哪囉!
0 意見:
張貼留言