SSIS 任务的索引调优

Posted

技术标签:

【中文标题】SSIS 任务的索引调优【英文标题】:Index Tuning for SSIS tasks 【发布时间】:2009-08-20 17:53:00 【问题描述】:

我正在使用 SSIS 在我的仓库中加载表格。由于我的 SSIS 很慢,因此在表上构建索引似乎是个好主意。

这个仓库没有主键(因此也有外键)、索引(集群或其他)、约束。换句话说,它是 100% 无效率的。

我们将根据使用情况放置索引 - 通过分析新查询和当前查询性能。

因此,我认为我应该使用闪亮的新数据库引擎优化顾问,而不是用我们老式的汗水和咕噜咕噜的方式来实际阅读 SQL 语句和执行计划。

我在我的 SSIS 包中关闭了 SQL 日志记录并运行了“调整”跟踪,将其保存到表中并在调整顾问中分析了输出。大多数查找都是这样完成的:

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',1

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',2

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',3

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',4

在分析时,这些语句的原因是“事件未引用任何表”。嗯?它没有看到 FROM dbo.Company 吗??!!这是怎么回事?

所以,我有多个问题:

    如何让它捕获在我的跟踪中执行的实际语句,而不是批量提交的语句? 对于针对 SQL Server 2008 运行的 SSIS 包的性能优化,是否有任何最佳实践可供遵循?

【问题讨论】:

【参考方案1】:

仓库总是有索引,至少在我的世界里是这样的:-)。 ETL 加载通常很容易索引,因为查询非常基础。 (您只需索引业务键列,以便在查找中更快地获取仓库键。)

例如“WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)”看起来可能 CompanyID 是一个查找键,需要一个索引。

您在示例中看到的是参数化 SQL(这很好)。您是否考虑过使用缺少的索引 DMV 而不是调整向导?我个人喜欢这种方法,因为它简单直接。只是不要立即获取所有建议的索引;需要判断,看看哪些是真正明智的实施。

另外,如果您的加载速度很慢,可能是由于其他原因。外键在起作用吗?你是批量加载吗(这很棘手,因为你可以向服务器请求批量插入,它可以根据目标表中聚集和非聚集索引的详细信息忽略你的请求)

【讨论】:

根据您的输入编辑问题。我没有使用 DMV。我没有 FK 或 PK - 只有仓库中的索引。没有检查约束 - 只有默认约束。你有任何我可以学习的 DMV 资源吗? blogs.msdn.com/bartd/archive/2007/07/19/…

以上是关于SSIS 任务的索引调优的主要内容,如果未能解决你的问题,请参考以下文章

01JVM调优调优--总结

性能调优调优的常见思路和方法

性能调优调优的常见思路和方法

性能调优调优的常见思路和方法

03JVM调优调优--2.基础:参数说明(堆参数说明),垃圾收集器(前置知识:垃圾回收算法,GC种类),垃圾收集器(种类,相关介绍)

Kafka 调优