我有一個350MB的表,它具有兩個varchar(2000)列的相當寬的表。通過SSIS數據流,需要60分鐘才能通過OLEDB「快速加載」目標加載到Azure SQL DW。我將該數據流上的目標更改爲Azure Blob目標(來自SSIS Azure feature pack),並且在1.5分鐘內完成相同的數據流(並且Polybase從該新的平面文件需要大約2分鐘)。最佳的SSIS數據流設置加載到Azure SQL中的階段表DW
對於另一個來源,我有一個現有的1GB平面文件。 SSIS數據流入Azure SQL DW中的OLEDB目標需要90分鐘。將文件複製到blob存儲,並且Polybase加載需要5分鐘。
SSIS是SSIS 2014,它在與Azure SQL DW相同的區域內的Azure VM上運行。我知道批量加載比Polybase慢得多,因爲批量加載通過控制節點漏斗,但Polybase在所有計算節點上並行化。但是這些批量負載數量非常低。
什麼是SSIS數據流和目標的最佳設置,以便通過批量加載儘可能快地加載到Azure SQL DW階段表?特別是我感興趣的最優值,除了任何其他設置下面的設置,我不考慮:
- 舞臺表幾何= HEAP(是最快的,我相信)
- 數據流量設置:
- DefaultBufferMaxRows =?
- DefaultBufferSize =?
- OLEDB目的地設置
- 數據訪問模式=表或視圖 - 快速負載
- 保持同一性=未選中
- 保持空值=?
- Table Lock =?
- 檢查約束=?
- 每批行數=?
- 最大插入提交大小=?
感謝Sonya。在花費60分鐘的數據流上,將stage table從columnstore切換到HEAP使其快2-3倍,並使DefaultBufferSize(由於該行的寬度導致10,000行緩衝區,即使DefaultBufferMaxRows爲100,000)變得最大化約快2-3倍。所以現在它在8分鐘內運行。 BDD在這個特殊的測試(DWU400與mediumrc用戶)中沒有明顯的區別。我測試的其他數據流目標設置也沒有顯着差異。我認爲我們找到了前兩名的罪魁禍首。 – GregGalloway