微調您企業中的 SSIS 封裝資料流程 (SQL Server 影片)
適用於:Microsoft SQL Server Integration Services |
作者:David Noor,Microsoft Corporation |
長度: 00:15:50 檔案大小: 68.1 Mb 檔案類型:WMV 檔案 |
影片摘要
本影片將說明如何提升 Integration Services 封裝中的資料流程效能,您將可透過本影片,學會微調下列的資料流程階段:
- 擷取
- 轉換
- 載入
您可以在設計、開發和執行資料流程時,應用這些效能微調訣竅。
影片致謝
謝謝 Thomas Kejser 對本系列「SQL Server 系列影片:SSIS 之效能設計與微調」在使用材料上的貢獻。本影片是這一系列影片中的第二部。
謝謝 Carla Sabotta 和 Douglas Laudenschlager 的指導與寶貴意見。
影片內容
影片時間戳記 | 音訊 |
---|---|
00:00 |
嗨,我是 David Noor,Microsoft SQL Server Integration Services 的資深開發組長。歡迎您觀看本影片,我們將說明如何微調您企業中的 SSIS 封裝資料流程。 本影片是「SSIS 之效能設計與微調」影片系列中的第二部,本系列共有四部影片。在這系列的第一部份,Denny 為您解說了如何測量並了解 SSIS 封裝的效能。而在本影片中,我們將更進一步為您說明如何提升 SSIS 封裝資料流程的效能。首先我們要認識每個資料流程共同具備的主旨,以及在嘗試提高效能時,該如何選擇優先微調資料流程的哪個部分。只要了解效能問題的癥結所在,您便可以利用許多方式處理,讓資料流程執行的更快、更有效率。我們還會說明一系列的特殊訣竅,方便您在設計、開發甚至執行資料流程時應用。 讓我們開始吧! 大部分封裝資料流程著重的是擷取、轉換和載入關鍵資料,這有時又稱為 ETL。而微調您的資料流程,就是指一一微調資料流程中的這些階段:擷取、轉換和載入。 針對擷取,我們會說明如何微調 SSIS 來源元件以及它們執行的查詢,以便發揮最佳效能,並將對來源系統的影響降至最低。 微調您資料流程中的轉換是指要檢查您所需完成的工作,並選擇最適當的方法來完成這些工作,像是移除不必要的步驟,有時也要去變更原始的來源查詢,讓它來進行轉換。 最後,微調您資料流程的載入,則是指微調 SSIS 目的地、網路、鎖定,以及會在資料流程載入資料到目的地時妨礙進度的其他因素。 在本影片中,我們會說明一些實用的訣竅,教您如何在資料流程的這三個階段中,找出可以微調的地方。 在我們與您分享這些訣竅之前,請您一定要記住,沒有任何秘方可以解決效能問題。這些訣竅的任何一個都不可能完全解決您資料流程遇到的所有效能問題。我們建議的這些訣竅在一般狀況下都能發揮良好的功用,但建議您不要只運用一大堆訣竅解決問題。不論是什麼狀況,最好的作法就是要全盤了解資料流程的目的,確認其設計完善可以達到這些目標、測量流程目前的效能並且反覆地變更資料流程,再測量這些變更能否改善效能。 此外,在檢查效能問題時,往往很容易執著於特定的某個技術或元件,這有時是因為您對技術或程式碼的熟悉度所導致。但不管原因為何,請盡量從整個生態系統的角度來思考資料流程的問題,尤其是多個關聯式資料庫、網路、作業系統、檔案系統等許多東西。您對整個生態系統的了解越多,就越能全盤掌握每個環節所面臨的實際效能挑戰,也就更能做出有效果又低風險的變更。 |
03:38 |
我們就從資料流程的起點,也就是擷取這個階段開始吧。在使用 SQL Server 或任何介面繁複的其他資料庫作為來源時,您應該試試漸漸提高封包大小。一般而言,SQL Server 的預設值 4096 通常能有不錯的結果,但因為您擷取的資料量將越來越大,提高這個數值應該會有助效能提升。為了實行這種作法,您可能要請網路管理員幫您的網路啟用「Jumbo Frame」(巨型封包),但您也應該測試這個功能對您封裝的影響。如果不管是大量作業 (例如 OLE DB 來源) 或是單一資料列作業 (例如 OLE DB 命令),您都是使用同一個連接管理員,不妨考慮建立第二個連接管理員並採用較低的封包大小供 OLE DB 命令作業使用。 請注意,如果您的 ETL 執行於 Windows 2008,同時您使用的是具有多個 NIC 的多核心電腦,便可將網路卡相似化到各個核心,取得稍微好一點的網路效能。進一步資訊,請參閱 MSDN 網站上篇名為<使用 Windows 擴充高網路流量>(英文) 的部落格文章。 在檢查如何微調擷取時,最簡單的一項就是微調您使用的查詢。有時為了簡便,您可能會直接選取所需的資料表,並從中擷取所有的資料行就行了,不過要是能只選取您真正需要的資料行,所得的效能與結果會遠優於前者。因為後者的結果不但能使用更少的網路流量和記憶體,同時資料庫伺服器也只需較少的 I/O 便可完成您的查詢。 正如這裡所示,對 SQL Server 而言,您也可以利用提示,指明在執行選取項目時不要發出任何共用鎖定,這樣您的查詢就會讀取可能的未認可資料 (又稱中途資料)。請在您真的需要擁有最佳效能時,才使用這種作法,同時也要確認讀取中途資料對 ETL 工作不會有任何不良影響。 您可以把查閱視為擷取或轉換,但不管是哪種方式,您都應該運用我們在前一張投影片中說明的概念。這裡更重要的是只選取您所需的資料行,這不但是為了最佳化網路使用,更是為了享有最佳的記憶體內部快取。 如果您使用的是 SQL Server 2008,有個有助效能的絕佳功能可用,就是加入一個共用查閱的新快取。共用查閱快取能讓您一次提取您的參考資料,並讓之後封裝中的多個查閱作業重複使用這些資料,甚至還可將快取儲存到檔案,方便多個封裝共用這些資料。如果您有多個參考相同資料表的查閱元件,不妨進一步了解這個新選項,利用它大幅提升封裝的執行速度。這個選項的使用非常簡單,先在封裝中建立快取連接管理員,利用新快取轉換擴展快取,然後再將查閱變更為使用這個快取連接擷取參考資料。 |
06:29 |
接著我們來看看 ETL 的第二階段:轉換。在轉換中,您所處理的資料已經載入到資料流程中,並試著要在載入前將它轉換成正確的格式。在 SSIS 中,每個轉換會顯示為可以拖曳到設計中的物件,但並非所有的轉換都一樣。我們先來看看存在於 SSIS 中的三種轉換:
說明完基本概念後,接著要來介紹一些特殊訣竅:
|
11:59 |
接著我們來看看載入階段。 載入資料到 SQL Server 時,您有兩個效能選項:
對上述所有方式而言,將認可大小設為 0 可以取得最快的載入速度。 在執行大型載入時,卸除您目的地系統的索引是種很常見的作法,但您應該運用一些方針來判斷何時可以這麼做。最常見的方針之一,就是根據載入預估會導致的提高百分比,以及資料表的索引類型,來決定卸除索引:
如果您要將資料載入到另有活動進行中的資料表,就必須想出適當的策略。大量載入很可能會鎖定所有或是大部分的目的地資料表,因此您必須確認可以這樣做,或使用資料分割。如果您需要再次載入某個運作資料庫,您可以建立資料分割以供載入資料,讓目前的運作資料庫可以保持使用。如果載入速度很慢,您應該要檢查該資料表或資料分割目前是否有其他活動正在進行,並確認沒有其他事項會佔用它。 如需有關提升大量載入和資料分割效能的精彩指南,請至 MSDN 上搜尋篇名為<資料載入效能指南>(英文) 的 SQLCAT 文章。 此外,在進行重新載入時,請確認使用 TRUNCATE 而非 DELETE 來清除資料,這樣刪除的資料才不會是交易式。 使用網路連接的目的地也會發生先前我說過的網路問題。請提高封包大小並為您網路啟用「Jumbo Frame」(大型封包) 功能,在載入時取得最佳的效能表現。 |
15:02 |
本效能系列的第二部份就到此結束,在此要特別感謝 Thomas 提供了實用資訊,構成本系列影片的基礎,也要感謝 Carla 和 Douglas 在製作此系列時提供的協助。如需這些主題的詳細資訊,請參閱<SQL Server Integration Services 十大最佳作法>(英文)。 謝謝您觀看本影片,請記得觀看「SSIS 之效能設計與微調」這個系列影片的其他三個單元。希望您覺得有所收穫,並歡迎您提供寶貴的意見,請到影片首頁,利用右上角的連結評等並提供意見。 |