[英]DataFlow task in SSIS is very slow as compared to writing the sql query in Execute SQL task
我是 SSIS 的新手,有兩個問題
我想將 1,25,000 行從一個表傳輸到同一數據庫中的另一個表。 但是當我使用Data Flow Task
,它花費了太多時間。 我嘗試使用ADO NET Destination
和OLE DB Destination
但性能不可接受。 當我在Execute SQL Task
編寫等效查詢時,它提供了可接受的性能。 為什么性能差別這么大。
INSERT INTO table1 select * from table2
根據第一次觀察,我改變了我的包裹。 它完全由使用直接查詢或存儲過程的Execute SQL Tasks
組成。 如果我只能使用Execute SQL Task
來解決我的問題,那么為什么要像這么多文檔和文章所表明的那樣使用 SSIS。 我認為它可靠、易於維護且速度相對較快。
有很多事情可能會導致“直接”數據流任務和等效的執行 SQL 任務的性能。
Execute SQL Task
s INSERT INTO 的基於集合的方法進行對比。 更新版本的 SSIS 默認訪問方法為目標的“快速”版本。 這將表現得更像基於集合的等價物並產生更好的性能。只是Execute SQL Task
的 SSIS 包本身沒有任何問題。 如果通過運行查詢可以輕松解決問題,那么我將完全放棄 SSIS 並編寫適當的存儲過程並使用 SQL 代理安排它並完成。
可能是。 即使對於像這樣的“簡單”案例,我仍然喜歡使用 SSIS,因為它可以確保一致的可交付成果。 這可能聽起來不是很多,但是從維護的角度看,它可以很好的了解與該數據包含在這些源控制SSIS包碴一切。 我不必記住或培訓新人任務 AC 是“簡單的”,因此它們是從 SQL 代理作業調用的存儲過程。 任務 DJ,或者是 K,甚至比這更簡單,所以它只是代理作業中的“在線”查詢來加載數據,然后我們有其他東西的包。 除了 Service Broker 和一些 Web 服務之外,它們也會更新數據庫。 我年紀越大,接觸的地方越多,我就越能從一致的,即使是矯枉過正的解決方案交付方法中找到價值。
性能不是一切,但 SSIS 團隊確實使用 SSIS 設置了 ETL 基准,因此它絕對有能力快速推送一些數據。
隨着這個答案越來越長,我會簡單地保留它,因為 SSIS 的優勢和直接 TSQL 的數據流是本機的,開箱即用
為了我的錢,很難打敗那些。
如果您在參數映射選項卡中將 SSIS 變量作為參數傳遞並通過表達式為這些變量賦值,那么您的執行 SQL 任務會在評估該表達式時消耗大量時間。 使用表達式任務(單獨)分配變量而不是在變量選項卡中使用表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.