SSIS最佳实践(优化二)[转]

9. 接纳并行执行提升性能

经过互动执行包和数据流任务,SSIS实现了较好的特性,SSIS包和数据流任务的并行执行可以由SSIS的两个特性举办支配。

马克斯ConcurrentExecutables:它指定一个包内的最大并行执行数(包内不同的天职),即SSIS运行引擎可以创造的线程数量,如若你的包制定的是连续工作流,这个属性不会有其它异样,但假诺你的包制定了并行任务,这一个特性就需要变更,其默认值是-1,表示所有可用的处理器数+2,假设你的微处理器匡助超线程,这它就是兼具逻辑处理器的多寡+2。

 

  EngineThreads:马克斯ConcurrentExecutables是SSIS运行时发动机并行执行时行使的性能,EngineThreads是数据管道引擎使用的性质,在SSIS 2005中默认值是5,在SSIS 2008中默认值是10,那个特性指定源线程(从源抽取数据)和行事线程(执行多少转换和加载)的多寡,这一个线程是由数量流管道引擎成立的,管理数据流任务中数据的传导和更换。如果EngineThreads的值为5,表示最大可以创立5个源线程和5个干活线程。注意,那么些特性仅仅是给多少流管道引擎的一个建议,管道引擎可以视需求创设更多或更少的线程。

 

  尽管你有一个包,它有5个相互数据流任务,马克斯ConcurrentExecutables属性的值为3,当您起来实施那一个包时,运行时将会互相启动3个数据流任务,任何数据流任务执行完时,下一个守候的数据流任务就会启动,以此类推,此时在数据流任务内发生的政工是由EngineThreads属性控制的。在最佳实践6中自己已经谈到,一个数据流任务会被拆分成两个执行树,数据流管道引擎会创建源和行事线程,它们的多少等于EngineThreads属性的值,也就是足以并行执行的执行树的多寡。假使你将EngineThreads的值设为5,那么您的数据流任务就会被拆分成5个执行树,但并不意味所有执行树会并行执行。

 

  在改动这一个属性时一定要很是小心,在运用到生育条件往日开展到底的测试是不可或缺的,因为啥正确配置了这个属性,在系统有限的资源限制下,通过并行执行可以加强性能,但倘使安排失当,也会伤害性能,因为从一个线程到另一个线程存在太多的上下文切换,指出创设并行执行的线程数量不要跨越可用的统计机数量

10. 日子日志的应用

日记时确诊运行期间暴发的问题的极品情势,当您的代码没有按预想执行时,它可以帮上大忙。现在,几乎所有的编程语言都提供了日志机制,通过日记确定这个问题或运行失利的根本原因。SSIS允许你开启日志效率,它同意你选取不同的风波和组件记录日志,并且可以指定日志的存放地点。

 

  就算日志可以帮你规定问题的根本原因,但它会引起性能降低,特别是假若过度使用日志,性能降低会更了然,因而我提出你仅当必要时才打开日志功用,你可以动态设置LoggingMode属性的值来启用或剥夺日志效用,当您怀疑某个包有问题时,你可以拉开日志效用,并当选合适的事件展开记录

13. 检查点特性如何协助包重启

SSIS有一个很酷的新特征叫做检查点(Checkpoint),它同意你的包在下次进行时,从上次破产的地点开头启动,这样可以节约成千上万实施时间。你可以经过设置包的五个特性(CheckpointFileName,CheckpointUsage 和 SaveCheckpoints)开启用这多少个新特色,除此之外,你还亟需将富有需要重启任务的FailPackageOnFailure属性设为True,设置了这么些特性后,执行破产时会将有关新闻捕获到检查点文件中,下次执行时就从上次挫败的地方开头施行起走。

这它是如何工作的吧?当你为某个包启用检查点属性后,执行情状会写入到检查点文件中,这么些文件的名字和位置是经过CheckpointFileName属性指定的。下四回实施时,运行时引擎会参考检查点文件,在重复执行包以前,先查看最后几遍举行的景色,如若它发现最后一回执行的情状为失败,它就了然最终一回破产的地点,然后就从非凡地点重新起头履行。假诺在下两次举行前您剔除了这多少个文件,包将会从头最先执行

     
启用那个特性后,在下两次执行时,你能够节省大量的岁月,因为它会跳过执行成功的手续。这里需要注意的是,你可以让一个任务参加检查点,包括数据流任务,但它无法拔取到数据流任务内,即你不得不在数据流任务级别启用它,不可以在数据流任务之中采用检查点。要是你有一个数据流任务,并将FailPackageOnFailure属性设为True让其进入检查点,现在在数据流任务内,你有5个连续转换,前多个都执行成功了,在第四个时进行破产了,在下一回举行时,如故会从第一个转移先河履行,前三个转换会再履行一遍

=

出自为知笔记(Wiz)SEO=2095290403228c267178c45ac204dc44

=

12. SSIS中的分布式事务及其影响(慎重使用)

SSIS允许你将多少个可执行程序组合到一道,然后通过分布式事务在一个作业中实行,你需要启动Windows服务中的分布式事务协调处理器服务,起头一听起来感到很酷,但它可能会有梗塞问题,特别是当某个任务的实施周期很长时,很容易暴发堵塞。例如,假诺在队列中你有一组数据流任务,一个Web Service任务,然后又是一个数据流任务,第一个数据流任务从源抽取数据,需要几分钟时间,Web Service任务从一个Web 瑟维斯(Service)(Service)抽取数据,需要花多少个钟头,最终的数据流任务合并这多少个多少,并将它们上载到结尾表中。现在一旦您在一个事务中推行这五个任务,资源将会被第一个任务锁定,直到其得了,虽然它不需要Web Service(Service)任务执行需要的资源。

 

  由此固然SSIS提供了分布式事务的功力,但也应当当心运用,即使你真要使用它,也要顿时将任务清除出组,并要谨慎设置IsolationLevel属性。我的指出是硬着头皮制止采纳这些特点,转而寻求其他代表解决方案

11. 使用性能计数器监控SSIS性能

除外日志可以开展性能诊断外,SSIS还引入了性能计数器来监督SSIS运行时和数目流管道引擎的特性。例如,SSIS包实例计数器表示运行在系统上的SSIS包数量,行读取和行写入计数器分别表示来自源的母集团数和写入到目的的总局数,缓冲区运用和缓冲区内存计数器分别代表成立的总缓冲区数量和缓冲区使用的内存大小,缓冲区输出是一个非常重大的计数器,表示当物理内存不足时写入到磁盘的缓冲区数量,BLOB字节读、BLOB字节写和BLOB文件使用计数器分别代表BLOB数据传输时BLOB字节读、写和数码流引擎近年来在拔取的用来输出BLOB数据的公文的多少。

 

  倘若你从安装有SQL Server和SSIS的Windows Server 2003调升到Windows Server 2008,SSIS性能计数器将会磨灭,因为提拔过程移除了这一个性能计数器,假诺想找回这么些性能计数器,请参见这篇知识库随笔(http://support.microsoft.com/kb/955632)

相关文章