【发布时间】:2010-12-04 01:10:37
【问题描述】:
我正在处理一个涉及 5 个过程、几个 while 循环以及大量插入和更新的 SQL 作业。
此作业处理大约 75000 条记录。
现在,这项工作可以正常处理 10000/20000 条记录,速度约为 500/分钟。在大约 20000 条记录之后,执行就结束了。它每 30 分钟加载大约 3000 条记录,并保持相同的速度。
我怀疑网络,但不确定。这类查询很难通过 SQL 性能监视器进行分析。不太确定从哪里开始。
此外,在其中一个 procs 中有一个游标,它只针对很少的记录执行。
关于如何在全尺寸数据集上加快此过程的任何建议?
【问题讨论】:
-
如果不访问代码(甚至更好:访问数据库),这种事情很难诊断。你能分享更多信息吗?
-
您正在开始交易吗?您是否有许多可能会影响性能的索引?
-
目前只有一个事务,但我也计划将事务添加到内部过程调用中。事务对性能有影响吗?
-
整个过程大约使用了10张表,涉及的索引很多。但不能说哪个可能会影响性能。但同样,为什么前 20,000 条记录没有发生这种情况,是不是每次执行查询时都会缓存一些东西,在 1000 秒后堆积起来,从而降低性能?
-
@Joel:我想我解释了基本流程以及正在使用的高级对象和机制。如果您需要任何具体信息,请告诉我。谢谢。
标签: sql sql-server sql-server-2005 tsql performance