2016-08-19 100 views
0

我有大SP包含主外部游标(我知道,我知道,但我必须检查每一行以确定如何处理它,例如写入子表,异常表,报告等)和一些内部游标。在这些游标内,调用其他执行插入/更新和删除操作的SP。SQL Server 2008r2提交性能问题

在最外层游标的顶部,我做了一个BEGIN TRAN,并在游标的末尾,在我循环回到TOP之前,我做了一个COMMIT TRAN。承担所有工作(父母和孩子)的最外层行。

这是一个独立的进程,在没有用户访问目标数据库的情况下运行,因为它在软件升级过程中发生。

我有一个调试语句显示处理外部游标的毫秒持续时间。在我执行此操作的大多数客户中,该持续时间在整个过程中非常一致,但是在一个客户中,持续时间逐渐变慢。此外,看起来这个客户端的最后一个COMMIT需要84秒来处理,而其他的它不会影响任何相同的平均时间。

它在客户端之间的代码相同。隔离级别是相同的。

sp_configure选项几乎相同。

客户端DBMS位于虚拟服务器上,其数据和日志具有良好平均的SQLIO时间。从一百万行表中测试一个select */into [table]只需要3秒钟,所以写入和自动提交似乎没问题。

想法或想法进一步诊断?

+0

可能有一百万个原因。没有看到一些代码和更多的细节,没有人可以提供超过推测。 –

回答

0

问题在于一个被调用的sp使用的性能差的索引 - 它正在执行一个表空间扫描,随着搜索时间的增加逐渐变慢。