所有组件都有计数器用来记录运行时各方面的数值,比如Integration Service会追踪记录每个组件的input rows, output rows以及error rows的数量,并将这些数字记在计数器里。其中,一些组件的计数器是跟性能相关的,专门用来记录性能有关的数字信息。如下列的计数器,可通过查看它们来确定性能瓶颈并达到性能优化的目的


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 Transformations

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!