SQLServer的SSIS最佳实践优化数据表

SQLServer的SSIS最佳实践优化数据表

ID:36564052

大小:105.50 KB

页数:5页

时间:2019-05-12

SQLServer的SSIS最佳实践优化数据表_第1页
SQLServer的SSIS最佳实践优化数据表_第2页
SQLServer的SSIS最佳实践优化数据表_第3页
SQLServer的SSIS最佳实践优化数据表_第4页
SQLServer的SSIS最佳实践优化数据表_第5页
资源描述:

《SQLServer的SSIS最佳实践优化数据表》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、本文将继续讨论SQLServer目标适配器,异步传输,DefaultBufferMaxSize和DefaultBufferMaxRows,BufferTempStoragePath和BLOBTempStoragePath,以及DelayValidation属性。  第一篇:SQLServer集成服务最佳实践:语句优化  最佳实践5:SQLServer目标适配器  如果你的目标是本地数据库,建议你使用SQLServer目标适配器,它提供了与BulkInsert任务类似的数据插入性能,并提供了某些额外增强。使用SQLServer目标适配器,在写入目标表之前你可以对数据

2、做转换操作,但BulkInsert任务是不行的,除了OLEDB目标适配器可用的选项外,SQLServer目标适配器还有更多选项,如图1所示。例如,你可以指定是否触发目标表上的插入触发器,默认情况下,这个选项设置为“false”,意味着不会触发目标表上的触发器,如果启用触发器,将会引起性能下降,但为了强制实施数据和业务规则,触发器是不可避免的。另外还有选项可以指定第一次和最后一次载入的数量,指定错误的最大数量,以及指定插入列的顺序。图1SQLServer目标适配器选项图2OLEDB目标适配器选项  如果你的SQLServer数据库在远程服务器上,就不能使用SQLSe

3、rver目标适配器,这个时候只能使用OLEDB目标适配器。此外,如果目标数据库可能会从本地改为远程,或从一个数据库实例改为另一个数据库实例,也最好使用OLEDB目标适配器,以减小未来可能的改变。 最佳实践6:尽可能避免异步转换  在讨论不同种类的转换对性能的影响之前,我们首先简要地回顾一下SSIS的工作原理,SSIS运行时引擎执行包,当SSIS运行时引擎遇到数据流任务时,它会将数据流任务交给数据流管道引擎,数据流管道引擎会将数据流任务拆分成多个执行树,可能会同时执行两个或多个执行树以提高并发处理能力和性能。你可能还不知道什么是执行树,下面就是答案。  正如其名,执

4、行树与树的结构类似,每个执行树有一套缓冲区,其范围与执行树紧密相关,每个执行树也分配有一个操作系统线程,与缓冲区不同,线程可能与其它执行树是共享的,即一个线程可以执行一个或多个执行树。在SSIS2008中,将数据流任务拆分成执行树的进程已经得到了极大的增强,它可以创建一个执行路径和子路径,以便你的包可以利用高端多处理器系统。  同步转换获得一个记录,经过处理,然后将其传给其它转换进程或下一个目标,记录的处理不依赖于其它传入的行,因为同步转换输出的记录数和输入的记录数是相同的,它不需要新的缓冲区(处理是在相同的入站缓冲区中完成的),因为就这样已经很快了。例如,在De

5、rived列转换过程中,在每个入站行增加一列,但不会增加输出的记录数。  与同步转换有点不一样,异步转换输出的记录数和输入的记录数可能不一样,需要创建新的缓冲区,因为一个输出依赖于一条或多条记录,也被称作阻塞转换。例如,排序转换就是一个不折不扣的阻塞转换,它要求所有入站的行在处理之前必须抵达才行。  正如上面所讨论的,异步转换需要额外的缓冲区用于输出,不会重复利用入站输入缓冲区,在处理之前它也会等待所有的入站行抵达,这也是异步转换执行得慢的原因,因此要尽可能避免这种情况。例如,如果不是有排序转换,你可以ORDERBY子句从源表本身获得已经排好序的结果。  最佳实践

6、7:DefaultBufferMaxSize和DefaultBufferMaxRows  正如我在最佳实践六中谈到的,执行树为入站数据排序和执行转换创建一个缓冲区,那么要创建多大的缓冲区合适呢?单个缓冲区有多少行数据进入呢?它对性能有何影响呢?  缓冲区的大小依赖于有多少行数据进入缓冲区,有多少行数据进入缓冲区又依赖于其它一些因素。首先要考虑的是评估每一行的大小,它等于所有入站行包含的所有列的最大大小,其次要考虑的是数据流任务的DefaultBufferMaxSize属性,它指定了一个缓冲区的默认最大大小,默认值是10MB,它的上下限是由SSIS的两个内部属性限制

7、的,分别是MaxBufferSize(100MB)和MinBufferSize(64KB),意味着一个缓冲区的大小范围是64KB到100MB,第三个因素是DefaultBufferMaxRows,它也是数据流任务的一个属性,它指定了进入缓冲区的默认行数,默认值是10000。  虽然SSIS提供了这么多的属性可以设置一个合适的缓冲区大小,如果大小超出了DefaultBufferMaxSize的值,它会减少进入缓冲区的记录行数。为了提高缓冲区的性能,你可以做两件事情,首先从源中移除不需要的列,并为每一列设置正确的数据类型,特别是你的源是一个平面文件时,这样可以让缓冲区

8、尽可能容纳

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。