技术开发 频道

Integration Services:SQL Server2005的高性能策略



评估选择

    根据使用指导,你可以更好的评估哪种应用选择更符合你的数据需求。

    在文件读取的例子中,你的需求不仅仅是往SQL Server中读入5000000条记录,还包括对这些记录的数据聚集。考虑到这些需求,确认以下哪个方法可以完成这项任务。注意,这里仅仅列出两个可行的方法。

◆方案1 - BULK INSERT解决方案 – 你当然可以使用BULK INSERT去从源文件读取数据,并装载到SQL Server中。但是,你还需要增加额外的操作,在把数据装载到目标表前对其进行聚集。一种方法是使用BULK INSERT把数据放入一个暂时的表,然后使用Transact-SQL对暂时表中的数据进行聚集,再用Transact-SQL把数据读入目标表中。

◆方案2 – SSIS解决方案– SSIS提供了一站式的解决方案,你可以在聚集数据的同时将其装载到目标表中。并且,在SSIS中你还能添加工作流程来控制这些操作的顺序,甚至对执行过程进行日志,记录操作执行的过程,以及进行出错处理,找出不符合要求的记录。

    当你对比上述两个方案时,SSIS解决方案可以不使用暂时表,并且把所有的数据读取逻辑和工作流程装入单一的SSIS包中。而对于方案1,你不仅需要使用Transact-SQL来对数据进行聚集,还需要把数据逻辑封装在一个存储过程中。所以,根据这一对比,SSIS解决方案是这一读取-聚集案例最优的选择,也就是可以提供足够的功能,并且有能力集中管理工作流程。

区域

    最后,你需要确认数据操作执行的区域。当你从源向目标读取数据时,你可能会有足够的灵活性去执行特定的操作。很有可能,你的决定会是基于一系列你必须权衡的因素,根据你特定的数据读取需求。

定义区域选择

    一般来说,你有三个区域可以选择:(1) 源数据服务器,(2)目标数据服务器,(3) 专门的解析,转换和读取(ETL)应用服务器。现实环境下,你的选择可能会受许可证的限制。但是,考虑到你的应用需求对各个区域的影响,你应该确定最适合你执行需求的区域,你甚至可能会发现有从新评估许可证策略的需要。

评估区域影响

    为了说明对区域的影响,假定源数据文件和数据读取操作所在的服务器,以及最后存入数据的目标SQL Server都不在一起:

1.目标数据服务器 – 当你的目标是SQL Server时,在目标数据服务器上执行SSIS操作会带来很大的性能优势。这种情况的最大好处就是可以在SSIS包中使用SQL Server Destination组件。这一组件可以优化在内存里的数据读取,比标准的OLE DB Destination组件获得8%到15%的性能提升。要记住,SQL Server Destination组件不支持数据类型的转换。最终,你需要在往目标表加载数据之前的SSIS步骤中,确认完成数据转换的操作。这也就是,在内存中的数据类型和SQL Server的数据类型是直接相对的。

    你当然也要了解SSIS与SQL Server在目标服务器上是怎样争夺资源的。为了减少争夺,你可以为SQL Server或者SSIS设置资源分配。例如,你可以降低SSIS并发线程的最大数目,以避免CPU的瓶颈。总体来说,如果你的数据读取操作需要你找出最快的方法,把数据读入到SQL Server,那么在目标服务器上运行SSIS就是比较好的选择,可以通过SQL Server的内存数据读取功能获得性能的提升。

2.源数据服务器 – 当你在源数据服务器上运行SSIS操作时,你可以在转换数据并通过网络向目标加载数据前,通过减小源数据集的大小来提高性能。例如,如果你需要聚集数据,那么输出记录的条目数一般会小于输入记录的条目数。并且,你可以通过在先前的SSIS过程中恰当的设定数据类型来减小数据集的大小。

    想要获得这一好处,你必须接受一些折中处理。如果其他的应用程序运行在源服务器上,SSIS可能会和这些应用争夺机器资源。如果资源比较有限,你很可能会牺牲掉你所获得的性能呢个提升。还有,如果你的目标服务器是SQL Server,你将不能使用经过优化的SSIS SQL Server Destination组件的内存数据读取功能。SQL Server Destination组件只有当SSIS数据操作在目标SQL Server服务器上执行时才会发生作用。除此之外,你必须要使用标准的OLE DB  destination组件,然而,它没有内存数据读取功能所带来的好处。

    考虑到这些牺牲,如果你能把大量数据记录减少成为较小的数据集,当你关心网络性能瓶颈的时候,在源数据服务器上执行SSIS操作是有好处的。

3.专门的SSIS服务器 – 当你有多种不同类型的数据源和目标,对较大量数据进行复杂转换时,使用专门的SSIS服务器是非常好的的方案。在这一专门的服务器上,SSIS可以使用全部机器资源而不必跟其他应用争抢,这样会获得非常好的的优势。

    也有不好的方面,你当然也无法使用SSIS SQL Server Destination组件。而且,从网络方面看,你必须要传送数据两次:从源服务器到SSIS服务器,然后再从SSIS服务器到目标服务器。如果你的网络贷款可以轻松的支持这些传送,这一方案提供了最大的SSIS灵活性。它也适合于那些有复杂转换需求的情况,这时SSIS不会反过来影响其他应用,或SQL Server本身。

总结

    当你设计数据整合解决方案时,你可以把性能调整看成一种艺术,或科学,但你更关注的是结果。为了帮助你更好的完成性能调整的工作,本文中描述的性能策略提供了一个方法框架,使您可以创建出高性能的数据整合解决方案。

    通过指导你对操作,容量,应用和区域进行评估,这一策略可以帮助你预见并优化各种大规模的数据读取情景,无论数据简单还是复杂。

希望了解更多信息,请访问以下网址:http://www.microsoft.com/sql/

关于作者

Elizabeth Vitt, Intellimentum

    Elizabeth Vitt在商业智能领域拥有超过十年的商业系统开发,项目管理,咨询和培训经验。她的业界经历包括为零售、制造和金融服务等行业实施商业智能解决方案。她在数据仓库,ETL和OLAP设计和实施方面还有着丰富的教学经验。Vitt女士是微软有关商业智能产品官方课程内容的特约作者,由MSPress出版了《商业智能:更快更好的做出决策》。伴随着SQL Server 2005的正式发表,Vitt女士帮助早期的客户成功的实施了SQL Server 2005方案。

0
相关文章