Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 比较存储过程性能ex和新版本_Sql_Sql Server_Performance_Stored Procedures - Fatal编程技术网

Sql 比较存储过程性能ex和新版本

Sql 比较存储过程性能ex和新版本,sql,sql-server,performance,stored-procedures,Sql,Sql Server,Performance,Stored Procedures,我确实在sp上使用的表上创建了两个新索引。 新的结果表明,在有问题的连接部分,扫描被转换为seek。我认为seek比scan操作更好。另一方面,这段时间的持续时间与没有新索引时差不多 显然,在将新版本sp投入生产之前,我如何才能获得满意的结果 例如,更改sp的参数可以帮助我查看新版本是否比旧版本快,或者其他什么 问候 bk要做的几件事: 1) 通过在每次测试运行后清除数据和执行计划缓存,确保公平地比较性能。您可以使用(建议仅在您的开发/测试环境中执行此操作): 2) 运行SQL Profiler

我确实在sp上使用的表上创建了两个新索引。 新的结果表明,在有问题的连接部分,扫描被转换为seek。我认为seek比scan操作更好。另一方面,这段时间的持续时间与没有新索引时差不多

显然,在将新版本sp投入生产之前,我如何才能获得满意的结果

例如,更改sp的参数可以帮助我查看新版本是否比旧版本快,或者其他什么

问候 bk

要做的几件事:
1) 通过在每次测试运行后清除数据和执行计划缓存,确保公平地比较性能。您可以使用(建议仅在您的开发/测试环境中执行此操作):

2) 运行SQL Profiler记录每种情况下的读/写/CPU/持续时间(带/不带索引)。这将为您提供一系列可供比较的指标(即,与SSMS中显示的时间相反)。
编辑: 要运行SQL探查器跟踪,请在Management Studio中转到工具->SQL Server探查器。出现提示时,指定要针对其运行跟踪的db服务器。一个“跟踪属性”对话框将出现-您只需单击“运行”即可开始运行默认跟踪。然后只需执行存储过程,并在SQL事件探查器中看到它—它将在旁边显示持续时间、读取次数等

3) 使用比现有数据量大得多的数据进行测试。如果使用少量数据进行测试,那么仅在持续时间上通常很难看到差异


最近,我讨论了如何公平地测试查询的不同变体的性能,这更详细地介绍了我如何进行测试。

我假设您使用的是SQL Server?谢谢Ada,请您扩展上面的第二项。我一直在做上面的项目,但是项目一没有像你在博客上提到的那样起作用,比如比较两个纸童,看哪一个能最快完成给定的一轮。清晰的方法似乎不起作用。一旦我运行了SP旧版本,第一次会花费很多时间,然后,我使用clear方法运行SP新版本。另一方面,当我再次清除并第二次运行SP旧版本时,所花的时间非常少。第一次,对于旧版本SP:4:24分钟第二次,对于旧版本SP:0:18分钟,我是否遗漏了什么?@blgnklc-如果您在每次运行存储过程之间执行所有3行“清除”,并且时间之间存在如此巨大的差异,那么一定有其他因素影响它(例如,服务器通常处于重载状态)@AdaTheDev——那么,在运行了三条线路之后,下面这条信息的意义是什么。我以为它能解决每一个新的SP操作。。。然后我发现还有其他的事情可能会影响。。DBCC执行已完成。如果DBCC打印了错误消息,请与系统管理员联系。DBCC执行已完成。如果DBCC打印了错误消息,请与您的系统管理员联系。@blgnklc-我不确定我是否遵守了。这些消息只是SQL的3个“cleardown”行的输出,只是说正在运行的DBCC命令已经完成OK。在3条语句块完成后,下次运行存储过程时,它将在清除缓存上运行。
CHECKPOINT -- force dirty pages in the buffer to be written to disk
DBCC DROPCLEANBUFFERS -- clear the data cache
DBCC FREEPROCCACHE -- clear the execution plan cache