正如我以为我在SSIS中获得了不错的成绩。极慢的SSIS查询
在SSIS包,我想用我的版本皮纳尔Dave的XML计划缓存查询发现这里:http://blog.sqlauthority.com/2009/03/17/sql-server-practical-sql-server-xml-part-one-query-plan-cache-and-cost-of-operations-in-the-cache/
我的版本只是增加了一个SELECT TOP 50的ORDER BY estimatedcost DESC。
我的查询:
WITH XMLNAMESPACES(DEFAULT N'http://schemas.microsoft.com/sqlserver/2004/07/showplan'),
CachedPlans
(
ParentOperationID,
OperationID,
PhysicalOperator,
LogicalOperator,
EstimatedCost,
EstimatedIO,
EstimatedCPU,
EstimatedRows,
PlanHandle,
QueryText,
QueryPlan,
CacheObjectType,
ObjectType)
AS
(
SELECT
RelOp.op.value(N'../../@NodeId', N'int') AS ParentOperationID,
RelOp.op.value(N'@NodeId', N'int') AS OperationID,
RelOp.op.value(N'@PhysicalOp', N'varchar(50)') AS PhysicalOperator,
RelOp.op.value(N'@LogicalOp', N'varchar(50)') AS LogicalOperator,
RelOp.op.value(N'@EstimatedTotalSubtreeCost ', N'float') AS EstimatedCost,
RelOp.op.value(N'@EstimateIO', N'float') AS EstimatedIO,
RelOp.op.value(N'@EstimateCPU', N'float') AS EstimatedCPU,
RelOp.op.value(N'@EstimateRows', N'float') AS EstimatedRows,
cp.plan_handle AS PlanHandle,
st.TEXT AS QueryText,
qp.query_plan AS QueryPlan,
cp.cacheobjtype AS CacheObjectType,
cp.objtype AS ObjectType
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
CROSS APPLY qp.query_plan.nodes(N'//RelOp') RelOp (op)
)
SELECT TOP 50
PlanHandle,
ParentOperationID,
OperationID,
PhysicalOperator,
LogicalOperator,
QueryText,
CacheObjectType,
ObjectType,
EstimatedCost,
EstimatedIO,
EstimatedCPU,
EstimatedRows
FROM CachedPlans
WHERE CacheObjectType = N'Compiled Plan'
ORDER by estimatedcost desc;
在SSMS此查询的子系统30的第二范围运行,但是当我在SSIS包的执行它,它需要3-4个小时才能完成,如果维护之前完成所有胜过它。
当服务器负载非常小时,SSIS包在晚上执行,然后将结果导出到CSV文本文件。
该包似乎做得很好,直到它执行查询,然后它只是挂起几个小时。
服务器统计: 服务器2008(64位) SQL服务器2008R2(64位) 24 GB RAM(16到SQL,8至OS) E5620 @ 2.4GHz的(2个进程)
编辑:
我试过的东西:
- 将输出写入全局临时表(和常规表),然后查询该表的输出。
- 在SSIS包中,创建并执行一个存储过程,并将查询输出到临时表(和常规表),然后查询该表以获取输出。
有可能SSIS包没有足够的内存来分配缓冲区,因此它必须从表中非常缓慢地接受数据。我建议你将数据加载到垃圾目的地,这将排除CSV目标,问题 –
另外,当你在SSMS中运行这个时,你是否等待所有50条记录到达? –
@ Nick.McDermaid:我试图通过将输出写入全局临时表和常规表来加快速度,但没有任何明显的速度变化。是的,我正在等待所有50条记录到达。我会用这个信息更新我的帖子。 – DBADon