sql-server – 如何最好地衡量查询性能?
我有2个存储进程,个中第二个存储进程是对第一个存储进程的改造. 我试图通过确切的改造量来权衡. 1 /丈量时钟时刻好像不是一个选项,由于我获得差异的执行时刻.更糟糕的是,偶然(很少,但它会产生)第二个存储进程的执行时刻大于第一个进程的执行时刻(我猜是因为其时的处事器事变负载). 2 /包罗客户统计信息也提供差异的功效. 3 / DBCC DROPCLEANBUFFERS,DBCC FREEPROCCACHE很好,但同样的故事…… 4 / SET STATISTICS IO ON也许是一个选项,可是假如我的存储进程涉及许多表,我怎么能获得总分? 5 /包罗现实执行打算也可所以一个选项.第一个存储进程的预计子树本钱为0.3253,第二个存储进程的子树本钱为0.3079.我能说第二个存储进程快6%(= 0.3253 / 0.3079)吗? 6 /行使SQL Server Profiler中的“读取”字段? 那么,无论执行前提怎样(处事器的事变负载,执行这些存储进程的处事器等),我怎么能说第二个存储进程比第一个进程快x%? 假如不行能,我奈何才气证明第二个存储进程的执行时刻比第一个存储进程好? 办理要领我喜畛刳较量之前和之后的场景时行使 SQLQueryStress免费器材.行使SQLQueryStress,您可以按照必要多次执行每个存储进程,并获取全部执行的总均匀值.譬喻,您可以执行100次每个存储进程,然后行使统计信息来备份您的改造. “高出100次执行,我的改造总共节减了30秒,而存储进程每次执行的读取次数镌汰了1500次.”我想你应该已经大白了. 假如存储进程中有参数,那么细心搜查您的改造是否合用于很多差异的参数集老是一个好主意. SQLQueryStress做了一些很酷的工作,让你在查询中替代参数,以更好地相识存储进程怎样执行. SQLQueryStress文档:http://www.datamanipulation.net/sqlquerystress/documentation/documentation.asp (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |