全部組件都有計數器用來記錄運行時各方面的數值,好比Integration Service會追蹤記錄每一個組件的input rows, output rows以及error rows的數量,並將這些數字記在計數器裏。其中,一些組件的計數器是跟性能相關的,專門用來記錄性能有關的數字信息。以下列的計數器,可經過查看它們來肯定性能瓶頸並達到性能優化的目的html
1) Errorrows計數器
記錄error記錄條數,需查看以下計數器來分析緣由
Transformation_errorrows
當有數據流有大量Error rows時,會影響到性能
具體請參照:排除Transformation Errors
2) Readfromcache和Writetocache計數器
記錄緩存讀寫記錄條數
當session包含Aggregator, Rank, 和Joiner組件時,需查看以下計數器來分析緣由
Transformation_readfromcache
Transformation_writetocache
Transformation_readfromdisk
Transformation_writetodisk
能夠在session運行時,經過在monitor裏查看運行session的log來查看細節
查看磁盤訪問時,須要計算"緩存命中率"和"緩存丟失率"
緩存命中率計算公式:[(# of reads from disk) + (# of writes to disk)]/[(# of reads from memory cache) + (# of writes to memory cache)]
緩存丟失率計算公式:[1 - 緩存命中率]
所以最小化磁盤讀寫,最大化緩存讀寫能夠最大限度的提高性能,其中緩存命中率爲1是最理想的狀況
3) Readfromdisk和Writetodisk計數器
記錄磁盤讀寫記錄的條數
當session包含Aggregator, Rank, 和Joiner組件時,需查看以下計數器來分析緣由
Transformation_readfromdisk
Transformation_writetodisk
可在session運行時,經過monitor查看session運行log的細節
若是這兩個計數器的值都大於0,說明緩存小,可經過調高緩存大小提高性能
關於緩存,包括index cache和data cache
其中index cache是存儲的group信息的,data cache存儲的是組件轉換後的數據
兩個緩存均可以提高性能,但因爲組件轉換後的數據量每每是很是大的,所以data cache需調高的要比index cache多
但若處理的數據量超過可用內存時,可調高index cache提高性能
若是session中的Aggregator是不斷累積增加的,Integration Service會不斷的從磁盤讀寫歷史Aggregated數據,
則下面的計數器值會大於零
Aggregator_readtodisk
Aggregator_writetodisk
若是預先就知道大致的數據量時,可將緩存調整爲合適的大小,由於緩存過大或太小都會有性能上的損失
4) Rowsinlookupcache計數器
當session中包含多個lookup組件時,可能會下降性能
若lookup表很大時,可經過優化lookup expressions來提升效率
具體請參照:Optimizing Lookup Transformationsexpress