可在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. 关于egg.js的安全延伸思考

    我看到全部的安全基于围绕http来操作,那么如果我只用websocket传输数据,是不是就会好很多?

  2. 茶杯头开枪ahk代码

    ;说明这个工具是为了茶杯头写的,F1表示换枪攻击,F3表示不换枪攻击,F2表示停止攻击. $F1::loop{ GetKeyState, state, F2, Pif state = D{break ...

  3. Linux 下 Samba 服务器搭建

    初学,分享 环境和条件--- 虚拟机:VMware虚拟机 系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:0 ...

  4. 如何选择合适的PHP版本

    PHP版本很多,包括32位64位以及线程安全与非线程安全在内的php版本多达几百个,应该如何选择PHP版本呢 PHP32和64的选择和区别 32bit的php的整型数据最大最小正负2GB左右(0x7F ...

  5. C++实现文件内字符数、单词数、行数的统计

    先给出github上的代码链接以及项目需求 1. 项目简介 这个项目的需求可以概括为:对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处 ...

  6. 如何让div弄成可以输入文字

    如何让div弄成可以输入文字 加一个contenteditable="true"属性即可.   <!DOCTYPE html> <html lang=" ...

  7. Error creating bean with name 'student': Unsatisfied dependency expressed through field 'teacher'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating

    有 有参构造但是没有无参构造...

  8. 第三次OO总结

    规格化设计的调研 随着50年代高级语言的出现,编译技术不断完善,涌现出多种流派的语言,其中就有里程碑式的Pascal语言:进入70年代,由于众多语言造成的不可移植.难于维护,Ada程序设计语言诞生了, ...

  9. DOTween的基本用法

    首先声明一点,不要简单的认为 DOTween 只能用在 Transform 组件上完成一些简单的动画,或者是完成一些 UI 动画,DOTween 的用途是很广的,unity中有很多组件都可以使用 DO ...

  10. Notes : <Hands-on ML with Sklearn & TF> Chapter 7

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...