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

9. 用并行执行提升性能

通过并行执行包和数据流任务,SSIS实现了比较好的性质,SSIS包和数据流任务之并行执行可以由SSIS的有数单特性进行控制。

MaxConcurrentExecutables:它指定一个包内的尽可怜并行执行数(包内不同的天职),即SSIS运行引擎可以创建的线程数量,如果您的担保制定的凡连连工作流,这些性不会见发另区别,但一旦您的承保制定了并行任务,这个特性就需变更,其默认值是-1,表示所有可用的处理器数+2,如果您的处理器支持超线程,那她便是富有逻辑处理器的数目+2。

 

  EngineThreads:MaxConcurrentExecutables是SSIS运行时发动机并行执行时以的特性,EngineThreads是数额管道引擎使用的性能,在SSIS 2005中默认值是5,在SSIS 2008中默认值是10,这个特性指定源线程(从源抽取数据)和工作线程(执行多少易与加载)的数,这些线程是由数流管道引擎创建的,管理数据流任务中数量的传和转换。如果EngineThreads的值也5,表示最好老可以创建5单源线程和5只干活线程。注意,这个特性仅仅是为多少流管道引擎的一个建议,管道引擎可以观看需求创建更多还是重复不见的线程。

 

  假要你来一个管,它发5个互相数据流任务,MaxConcurrentExecutables属性的价值吗3,当您开履行这包时,运行时将会晤彼此启动3单数据流任务,任何数据流任务执行完时,下一个等待的数据流任务就是见面启动,以此类推,此时在数据流任务外发的业务是由于EngineThreads属性控制的。在最佳实践6饱受自我就谈到,一个数据流任务会于拆分成多独实施树,数据流管道引擎会创建源和工作线程,它们的数等于EngineThreads属性的价,也即是得并行执行的执行树的数码。如果您以EngineThreads的值设为5,那么您的数据流任务便见面给拆分成5个实施树,但连无意味有执行树会并行执行。

 

  于改动这些性时肯定要是死小心,在动用到生育环境之前进行清底测试是必备的,因为什么是配置了这些性,在网有限的资源限制下,通过并行执行可以提高性能,但只要安排失当,也会见贻误性,因为从一个线程到其他一个线程存在不过多之上下文切换,建议创建并行执行的线程数量不要超过可用之处理器数量

10. 时光日志的运用

日志时确诊运行中有的题材的超级办法,当您的代码没有随预想执行时,它可以拉上忙。现在,几乎所有的编程语言都提供了日记机制,通过日记确定好问题要运行失败的根本原因。SSIS允许而打开日志功能,它同意而挑不同的事件和零部件记录日志,并且可指定日志的存位置。

 

  虽然日志可以拉您规定问题的根本原因,但她会招性能降低,特别是要是过于用日志,性能降低会另行明显,因此自提议您只当必要时才开日志功能,你得动态设置LoggingMode属性的价来启用或剥夺日志功能,当你怀疑有包有问题时,你可被日志功能,并当选合适的波开展记录

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)

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

SSIS允许你拿多个可执行程序组合及共同,然后经分布式事务在一个事务中实行,你需要启动Windows服务遭遇之分布式事务协调处理器服务,起初一听起感觉很挺,但其恐怕会见出梗塞问题,特别是当某个任务之履周期异常丰富时,很爱有围堵。例如,假而于列中而生同样组数据流任务,一个Web Service任务,然后以是一个数据流任务,第一单数据流任务从源抽取数据,需要几分钟时间,Web Service任务由一个Web Service抽取数据,需要花几单小时,最后的数据流任务合并这些数据,并以其上载到终极表中。现在而您在一个业务中实践及时三只任务,资源用会让第一个任务锁定,直到其得了,即使她不需Web Service任务尽要的资源。

 

  因此尽管SSIS提供了分布式事务之功力,但也应当心使用,即使你真要使用她,也如立刻用任务清除出组,并使审慎设置IsolationLevel属性。我的提议是不择手段避免使此特点,转而谋其他替代解决方案

13. 检查点特性如何援助包重开

SSIS有一个那个怪的新特征叫做检查点(Checkpoint),它同意你的承保在下次行时,从上次黄的地方开启动,这样可以省成千上万履时。你得经设置包的老三单属性(CheckpointFileName,CheckpointUsage 和 SaveCheckpoints)开启用这个新特色,除此之外,你还需要以有需要再行开任务之FailPackageOnFailure属性设为True,设置了这个特性后,执行破产时会见用有关信息捕获到检查点文件被,下次行时就是于上次惜败的地方开始实行起走。

这就是说它们是怎工作的吗?当你也某包启用检查点属性后,执行状态会刻画副到检查点文件被,这个文件的名字与位置是由此CheckpointFileName属性指定的。下一致蹩脚实行时,运行时引擎会参考检查点文件,在重执行包之前,先查看最后一次于实践之状态,如果它发现最后一差执行之状态为失败,它就知道最后一浅失败的地方,然后就是从很地方更开始施行。如果以产一致潮实施前你去了之文件,包将会从头开始执行

     
启用这个特点后,在产一致坏实行时,你得节约大量之时刻,因为其见面越了行成功之手续。这里要注意的是,你可让一个职责在检查点,包括数据流任务,但它们不可知使用及数据流任务外,即你不得不当数据流任务级别启用其,不可知以数据流任务中使用检查点。假设你出一个数据流任务,并将FailPackageOnFailure属性设为True让该在检查点,现在在数据流任务外,你生出5只连变,前四独还履行成功了,在第五单时实行破产了,在产同样软施行时,还是会于第一个转移开始实行,前四只转换会再履行同一潮

=

根源为喻笔记(Wiz)SEO=2095290403228c267178c45ac204dc44

=

相关文章