可在session log中使用线程统计信息来判断source,target或组的性能瓶颈
默认情况下,Integration Service在运行session时,使用一个reader thread,一个transformation thread,还有一个writer thread
如果其中一个thread有非常高的busy percentage,则说明该部分可能有性能上的瓶颈

session log中提供以下几个线程相关的信息:

  Run time:
    运行时间,即thread运行的总时间

  Idle time:
    空闲时间,即thread运行的空闲时间,它包括了thread等待其他thread处理的时间
    空闲时间包括的是thread被Integration Service锁定的时间,而不是被操作系统锁定的时间

  Busy time:
    工作时间,即工作时间占总运行时间的百分比
    公式:(run time - idle time) / run time X 100
    如果总的运行时间非常短,如60秒以内,则可以忽略,因为这么短的时间不足以判定为性能上的瓶颈

  Thread work time:
    Integration Service处理运行组件所花费的时间
    在session log中,使用如下格式显示,如果组件花费的时间不长,则它是不会出现在session log中的
      Thread work time breakdown:
        <transformation name>: <number> percent
        <transformation name>: <number> percent
        <transformation name>: <number> percent

    如果在session log中,thread没有准确的统计信息,则说明session运行的时间很短,因此在session log中会提示统计信息不准确

评估性能瓶颈
  使用线程统计信息评估性能瓶颈,主要通过以下几点:
    1 如果reader和writer线程的Busy time是100%,可以考虑在source和target中使用string类型,因为针对非string类型需额外处理
    2 如果某一组件的work time是100%,可以考虑在segment中追加一个分区点
     当向mapping追加一个分区点时,Integration Service会在session运行时增加处理该组件的线程数
     但如果所在机器的内存已达到或者接近满负荷状态,则不要进行该操作
    3 如果一个组件需要比其他组件更多的处理时间,则可考虑为该组件追加一个pass-through partition point

实例

当运行session,session log中关于线程相关的信息会像如下:

***** RUN INFO FOR TGT LOAD ORDER GROUP [], CONCURRENT SET [] *****
Thread [READER_1_1_1] created for [the read stage] of partition point [SQ_two_gig_file_32B_rows] has completed.
Total Run Time = [505.871140] secs
Total Idle Time = [457.038313] secs
Busy Percentage = [9.653215]
Thread [TRANSF_1_1_1] created for [the transformation stage] of partition point [SQ_two_gig_file_32B_rows] has completed.
Total Run Time = [506.230461] secs
Total Idle Time = [1.390318] secs
Busy Percentage = [99.725359]
Thread work time breakdown:
LKP_ADDRESS: 25.000000 percent
SRT_ADDRESS: 21.551724 percent
RTR_ZIP_CODE: 53.448276 percent
Thread [WRITER_1_*_1] created for [the write stage] of partition point [scratch_out_32B] has completed.
Total Run Time = [507.027212] secs
Total Idle Time = [384.632435] secs
Busy Percentage = [24.139686] log中包含了如下信息:
运行transformation的总体时间是506秒,工作时间是99.%,可得知transformation thread几乎没有空闲时间,因此可判定transformation是该session的性能瓶颈
reader thread和writer thread的的工作时间分别为9%和24%,可得知空闲的时间占了大部分,因此可判定reader和writter并不存在性能瓶颈
关于判定transformation中是哪个组件导致性能问题,可参考Thread work time breakdown列表,可看到组件RTR_ZIP_CODE的工作时间最高,是53%,因此可针对此组件调

使用线程统计信息(Thread Statistics)的更多相关文章

  1. SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON

    对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...

  2. SQL SERVER 统计信息概述(Statistics)

    前言 查询优化器使用统计信息来创建可提高查询性能的查询计划,对于大多数查询,查询优化器已经为高质量查询计划生成必要的统计信息,但是在少数情况下,您需要创建附加的统计信息或者修改查询设计以得到最佳结果. ...

  3. (3.14) set statistics io/time/profile /SET SHOWPLAN_ALL ON详解统计信息与执行计划

    SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON  执行计划详细描述请参考(读懂执行计划) 对于语句的运行,除了执行计划本身,还有一些其他 ...

  4. SQL Server 统计信息(Statistics)-概念,原理,应用,维护

    前言:统计信息作为sql server优化器生成执行计划的重要参考,需要数据库开发人员,数据库管理员对其有一定的理解,从而合理高效的应用,管理. 第一部分 概念 统计信息(statistics):描述 ...

  5. 通过手动创建统计信息优化sql查询性能案例

    本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...

  6. MS SQL 统计信息浅析上篇

    统计信息概念 统计信息是一些对象,这些对象包含在表或索引视图中一列或多列中的数据分布有关的统计信息.数据库查询优化器使用这些统计信息来估计查询结果中的基数或行数. 通过这些基数估计,查询优化器可以生成 ...

  7. SQL语句调优 - 统计信息的含义与作用及维护计算

    统计信息的含义与作用                                                                                          ...

  8. 第十二章——SQLServer统计信息(1)——创建和更新统计信息

    原文:第十二章--SQLServer统计信息(1)--创建和更新统计信息 简介: 查询的统计信息: 目前为止,已经介绍了选择索引.维护索引.如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索 ...

  9. SQL SERVER的统计信息

    1 什么是统计信息     统计信息 描述了 表格或者索引视图中的某些列的值 的分布情况,属于数据库对象.根据统计信息,查询优化器就能评估查询过程中需要读取的行数及结果集情况,同时也能创建高质量的查询 ...

随机推荐

  1. JAVA课程设计-教学论坛系统

    团队课程设计博客 1. 团队名称:教学论坛系统设计团队 团队成员介绍: 郑佳亮(组长):201721123022,查看帖子,点赞,参与度,搜索,管理员删帖的后端,点赞,参与度前端 李于程(组员):20 ...

  2. linux中du与df的区别和联系

    1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df, ...

  3. Numpy安装

    Python官网上的发行版是不包含Numpy模块的. 1.使用已有的发起行版本 对于许多用户,尤其是在Windows上,最简单的方法就是下载以下的Python发行版,他们包涵了所有的关键包(包括Num ...

  4. Email接收验证码,以实现登录/注册/修改密码

    要求 1)实现Email形式的注册功能和相应的登录功能:2)实现忘记密码时的密码找回功能:3)存在数据库中的密码不能以明文形式存放,即建议在浏览器端发送请求前,调用js代码对用户的密码做md5加密 分 ...

  5. VB编程中的“Abs”是什么意思?

    c = Val(Text1.Text) '将Text1中的值赋给cIf c = Abs(a - b) Then 'Abs(a - b)是a和b间的差(正数),判断c是否等于该差值f = f + 10 ...

  6. Retrieving archetypes

    报错:Retrieving archetypes:' has encountered a problemAn internal error occurred during:"Retrievi ...

  7. kvm+webvirtmgr在centos7上的部署

    #!/bin/bash #+++++++++++++++++++++++++++++++++++++++++++++++++++++++安装配置kvm并创建虚拟机+++++++++++++++++++ ...

  8. ubuntu安装spyder和jupyter notebook

    ubuntu安装spyder和jupyter notebook 安装spyder 安装spyder sudo apt install spyder sudo apt install spyder3 安 ...

  9. RSA 前段加密 java 后台解密 已调试通过

    本人整理网上的.好多网上的调不通.在这里把调试好的贴出来. 1.   异步获取公钥(后台获取):你也可以将公钥串写在页面上: var publicKey = null; $.ajax({ url: c ...

  10. python视频地址和链接

    算法 链接:http://pan.baidu.com/s/1nvHmcZJ 密码:fwjg常用库 链接:http://pan.baidu.com/s/1o8uPvPg 密码:yp3w进阶-高级代码 链 ...