性能瓶頸之Source

 

數據源的瓶頸一般發生從數據庫讀取數據的時候,緣由一般以下:
  1) 腳本的查詢效率低下
  2) 數據庫網絡包過小

如何斷定源瓶頸
  經過在session log中讀取thread statistics斷定源的瓶頸
  若是read thread花費的時間大大多於write thread和transformation thread,則可說明性能瓶頸在於目標數據庫

  若是session是從源文件讀取數據,則性能瓶頸可能不在源數據庫


  若是session是從關係型數據庫讀取數據的,可經過以下方法判斷源的瓶頸網絡

    使用filter組件
      在每個source qualifier組件後追加一個filter組件,將條件設爲false(如1=2)確保沒有數據經過
      若是session運行的時間仍是沒有變化,則可斷定瓶頸在源

    建立測試用的read mapping
      建立測試用的read mapping,並將查詢與其餘組件隔離,建立步驟以下:
        1) 將原來mapping複製
        2) 在複製的mapping裏,只保留sources, source qualifiers和任何其餘custom joins或queries組件
        3) 移除全部中間數據轉換處理的組件
        4) 將source qualifiers組件鏈接至目標文件
      若是session運行的時間仍是沒有變化,則可斷定瓶頸在源

    使用數據庫查詢
      直接在數據庫端運行查詢腳本
      若是腳本運行的時間很長,則可斷定瓶頸在於源的查詢腳本

如何解決源的性能
  1) 當Integration Service從文件讀取數據,可設定讀取每行數據時的最大字節數
  2) 讓DBA優化查詢腳本
  3) 增長數據庫網絡包大小
  4) 追加索引和約束
  5) 若是一個數據庫查詢在兩個時間測量之間有很長的延遲,能夠考慮使用優化器(optimizer hint)session

相關文章
相關標籤/搜索