我有一個數據流包含調用存儲過程的OLEDB源(通過變量生成的語句)。 在SSMS中,需要8分鐘,但包裝本身需要花費3倍的時間才能完成。 我已將驗證(DelayValidation)設置爲true,因此它在運行時仍會執行此操作。我還在數據流組件中以及在連接管理器中設置了元數據的驗證。 數據流也具有ReadUncommitted。 我不知道在哪裏尋找,如何讓這個運行更快的任何幫助將是偉大的。SSIS預評估階段花費很長時間
回答
我懷疑真正的問題是在你的存儲過程,但我已經包括了一些基本的SSIS項目,以及設法解決您的問題:
- 確保連接管理器的OLE DB源都設置toDelayValidation (=真)。
- 確保ValidateExternalMetadata設置爲false
- DefaultBufferMaxRows和DefaultBufferSize對應表中的行大小
- 刪除並重新創建目標組件是SSIS
- 確保您的存儲過程SET ANSI_NULLS ON
- 確保您的存儲過程中的SQL命中索引
添加查詢提示OPTION(FAST 10000) - 此提示表示它將選擇一個將優化前10,000行的查詢 - 默認SSIS緩衝區大小
查看您的存儲過程SQL Server parameter sniffing。
慢速方式:
create procedure GetOrderForCustomers(@CustID varchar(20))
as
begin
select * from orders
where customerid = @CustID
end
快速的方法:
create procedure GetOrderForCustomersWithoutPS(@CustID varchar(20))
as
begin
declare @LocCustID varchar(20)
set @LocCustID = @CustID
select * from orders
where customerid = @LocCustID
end
爲什麼你建議跳過驗證?我覺得它很有價值,雖然有時很慢。當然,在編譯時當前不存在表或字段的特定場景之外,您是否看到過這會導致問題? – 2015-12-28 18:21:27
我沒有看到它導致問題,除了它很慢。將ValidateExternalMetadata屬性設置爲False可以比將DelayValidation屬性設置爲True提供更精確的數據流控制。當ValidateExternalMetadata屬性設置爲True(默認值)時,它有助於避免包在使用事務時出現鎖定問題。出於這個原因,您可能希望堅持在任務級別使用DelayValidation,除非您有一些壓倒性的需要在組件級別工作。 – Renegrin
選項(FAST N)對我來說是修復。 – vanlee1987
- 1. AngualrJS - 在「評估腳本」中花費很長時間的KendoUI應用程序
- 2. SQL查詢花費很長時間
- 3. Interbase SQL花費很長時間執行
- 4. GLFWInit花費很長時間初始化
- 5. ServletOutputStream花費很長的時間寫入
- 6. XML花費很長時間解析MSSQL
- 7. Webservice花費很長時間來響應
- 8. 刪除突然花費很長時間
- 9. WMI查詢花費很長時間
- 10. AngularJS渲染花費很長時間
- 11. 查詢花費很長時間DISTINCT
- 12. didUpdateLocations花費很長時間來加載
- 13. Select語句花費很長的時間
- 14. MySQL查詢花費很長時間
- 15. Twitter Bootstrap:花費很長時間編譯
- 16. Unix循環花費很長時間
- 17. ExecutionResult result.hasNext()花費很長時間返回
- 18. SQL select ... in(select ...)花費很長時間
- 19. EtherumJ EthereumFactory.createEthereum()花費很長時間
- 20. Nutch Crawler花費很長時間
- 21. Netsuite API花費很長時間迴應
- 22. 查詢花費很長時間執行
- 23. SQL查詢花費很長的時間
- 24. 政策評估需要很長時間
- 25. CreateDeploymentBySlot階段需要很長的時間
- 26. GraphAlgoFactory.allSimplePaths花費很多時間
- 27. 阿帕奇卡夫卡消費者花費很長時間
- 28. :app:transformClassesAndResourcesWithProguardForRelease花費太長時間
- 29. ViewResult.ExecuteResult花費太長時間
- 30. 當uWSGI花費很長時間處理請求時,Nginx超時
你能後的SSIS日誌,說明您認爲有性能問題。 –
軟件包未啓用日誌記錄,但在使用dtexecui運行時,在預執行階段過程需要很長時間。我期望從包裝中完全減少或刪除該步驟,因爲這是瓶頸所在。 – dirtyw0lf
我不知道答案,但發現很多事情要嘗試,例如,當我搜索「ssis預執行階段卡住」。你有沒有對數據庫運行分析器,看看它在這個時間裏正在做什麼?它反對什麼數據庫? –