回答
這些警告表明您有不使用你的數據流列。數據流的工作原理是分配固定大小內存的「桶」,用來自源的數據填充它,並允許下游組件直接訪問內存地址以執行同步轉換。
內存是有限的資源。如果SSIS檢測到有1 GB可用,一行數據將花費4096 MB,那麼在內存空間不足之前,最多可以有256行數據。這256行將被拆分爲N行,因爲儘可能多的,你想要在使用數據庫時執行基於集合的操作。
爲什麼這一切都很重要? SSIS會檢測您是否使用過所有已引入流水線的內容。如果它從未被使用過,那麼你正在浪費記憶。通過排除未使用的列,而不是單個行花費4096,您可以將每行所需的內存量減少到1024 MB,而現在只需要採取所需的操作就可以在流水線中擁有1024行。
你如何到達那裏?在你的數據源中,寫一個查詢而不是選擇一個表。請不要使用SELECT * FROM myTable
,而是明確列舉所需的所有列,僅此而已。平面文件源也一樣 - 取消選中從不使用的列。您仍然會因爲必須讀取整行內容而受到損失,但他們不必擊中DF並消耗該內存。任何查找都是同樣的故事 - 只查詢您需要的數據。
Asynchronous components是最後要注意的事情,因爲這已經變成了對性能的謾罵。上面的計算和新生的微積分類非常相似:假設牛是一個使數學變得更容易的球。異步組件導致您的內存在組件之前和之後被拆分。它們從根本上改變了通過組件的行的形狀,使得下游組件不能重新使用它上面的地址空間。這導致物理內存拷貝是慢速操作。
但我的最終評論是,如果你的軟件包運行正常,在可接受的時間範圍內完成,除非你沒有別的事要做,離開它並繼續下一個任務。這些只是警告,不應該「長大」到全面的錯誤。
+1爲教育答案;但不會4096 KB是比4096 MB更典型的示例行大小? – criticalfix
@criticalfix真的和最初我曾經使用知識庫,但後來決定我不想做額外的轉換數學;) – billinkc
- 1. Coverage.py警告:未收集任何數據
- 2. 從SSIS數據流任務強制警告
- 3. SSIS包數據流任務報告
- 4. 「警告:未找到任務」babel「,請使用 - force繼續。」
- 5. 未使用的警告UIViewAutoresizing.flexibleBottomMargin
- 6. 「未使用的參數」警告C
- 7. 未使用的參數警告
- 8. 系統任務或函數'$ value $ plusarg'未定義 - >警告:Verilog
- 9. 未使用變量警告
- 10. SSIS:如何在腳本任務中使用數據流任務中的數據?
- 11. PHP包警告:包():參數未使用
- 12. 警告:未能打開流和警告:無法在move_upload_file移動()
- 13. 步兵 - 無法運行服務:「警告:任務‘autoprefixer’未找到」
- 14. Rails插件任務棄用警告
- 15. 如何禁用警告DataTables警告從數據源請求未知參數行
- 16. Cakephp警告 - 未能打開流
- 17. 警告:require_once(phing/BuildException.php):未能打開流
- 18. 警告:move_uploaded_file();未能打開流
- 19. PHP警告[function.include]:未能打開流
- 20. 任何使用[UIView new]的警告;?
- 21. 使用服務器端處理時的數據表警告
- 22. 如何使用執行SQL任務的輸出參數來使用數據流任務獲取其他數據?
- 23. 獲取未使用的變量警告
- 24. 「未使用的導入警告」和pylint
- 25. Eclipse中的字段未使用警告
- 26. 警告:未使用計算出的值
- 27. 警告:未使用的變量
- 28. 工作流警告
- 29. ActivityManager:警告:活動未啓動,其當前任務已提前
- 30. jbpm5中用戶任務後未轉發的工作流
請解釋你的問題... –
想要移除警告像提高性能 – USER9999