站长网 大数据 SQL Server集成服务最佳应用:语句优化

SQL Server集成服务最佳应用:语句优化

SQL Server集成服务(SQL Server Integration Services,SSIS)在其前辈DTS(Data Transformation Services,数据转换服务)的基础上进步了不少,从可用性、性能和并行等方面来说,它已经成长为一个企业级ETL(Extraction, Transformation and Loading,抽

SQL Server集成服务(SQL Server Integration Services,SSIS)在其前辈DTS(Data Transformation Services,数据转换服务)的基础上进步了不少,从可用性、性能和并行等方面来说,它已经成长为一个企业级ETL(Extraction, Transformation and Loading,抽取、转换和加载)产品,除了是一个ETL产品外,它也提供了各种内置任务来管理SQL Server实例。虽然SSIS的内部架构已经被设计为提供极好的性能和并行处理能力,但如果遵循最佳实践,其性能还可进一步优化,在本系列文章中,我将讨论SSIS的最佳实践,我会将我过去几年学习和使用SSIS的经验与大家分享。

  正如上面所说的,SSIS是DTS(SQL Server 7/2000)的替代产品,如果你曾经使用过DTS,你会发现SSIS包和DTS包非常类似,但本质上已经发生了很大的变化,SSIS不是DTS的增强版本,而是从零开始构建的一个新产品,与DTS相比,SSIS提供了更好的性能和并行处理能力,并克服了DTS的许多限制。

  SSIS 2008进一步增强了内部数据流管道引擎,提供了更好的性能,你可能已经看到了SSIS 2008创造的一个ETL世界记录,那就是在半小时内加载1TB数据。

  SSIS的最大好处是它是SQL Server的一个组件,它可以随SQL Server安装而免费获得,不再需要为它购买额外的许可,BI开发人员、数据库开发人员和DBA都可以使用它转换数据。

  最佳实践1:抽取大批量数据

  最近我们从一个有3亿条记录的大表中抽取数据,起初,当SSIS包启动时一切正常,数据如预期的那样在转换,但性能开始逐渐下降,数据转换速率直线下降。通过分析,我们发现目标表有一个主聚集键和两个非聚集键,因为大量数据插入这个表,导致其索引碎片水平达到了85%-90%。我们使用索引在线重建特性重建/重组索引,但在加载期间,每过15-20分钟,索引碎片水平又回到90%,最终数据转换和并行执行的在线索引重建过程花了12-13个小时,远远超出了我们的预期。

  我们想出了一个办法,当转换开始前,我们将目标表的索引全部删掉,转换结束后又再重新创建索引,通过这样处理后,整个转换过程花了3-4小时,完全符合我们的预期。

  整个过程我画在下面的图中了。因此我建议如果可能,在插入数据前,删掉目标表上的所有索引,特别是插入大数据量时。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/shuju/2021/0716/13207.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部