回答

收藏

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

技术问答 技术问答 186 人阅读 | 0 人回复 | 2023-09-13

我确实在sp上使用的表上创建了两个新索引。新结果表明,在有问题的连接部分,扫描被转换为寻找。我认为搜索比扫描操作更好。另一方面,该时间与没有新索引时所花费的时间大致相同。
2 F7 q( S" f* k很明显,在将新版本sp投入生产之前,我如何才能感到满意。& P7 ~# K1 k& P5 H
例如,更改sp的参数可以帮助我查看新版本是否比旧版本快,或者还有什么?
" _5 K/ ?; A% S2 X7 s问候bk5 c9 V1 o+ c+ c% w8 _; q
               
, V3 A$ e9 A% G  k- _% n( n0 S解决方案:. T$ y+ V$ |/ E$ d8 Z7 @% p
                ( Q+ q0 \; w! e' @

( Q& k* Y( _+ W4 o- `" E
+ X6 S' i- |# m2 h                需要做的几件事:
, ~- d9 F1 B/ v# ?' I1)通过在每次测试运行后清除数据和执行计划缓存,确保您公平地比较性能。您可以使用清除这些内容(建议仅在开发/测试环境中执行此操作):2 |7 l6 o& W* ]
CHECKPOINT -- force dirty pages in the buffer to be written to disk9 f* I  `: a! f7 {8 u; a+ _/ r
DBCC DROPCLEANBUFFERS -- clear the data cache
6 V5 G, B# h+ |6 H) ]( Q% m2 MDBCC FREEPROCCACHE -- clear the execution plan cache
( j5 n. E. N$ O# u1 c  |; `2)运行SQL事件探查器以记录每种情况下的读/写/ CPU
$ P4 H1 h1 L( v: H/持续时间(有/没有索引)。这将为您提供一系列可供比较的指标(即,与仅SSMS中显示的时间相对)。! @2 b$ U! P$ k) i1 {$ G
编辑: 要运行SQL Profiler跟踪,请在Management Studio中转到“工具”->“ SQL Server
# j( V6 k7 d+ ]% K/ }Profiler”。出现提示时,指定要对其运行跟踪的数据库服务器。将出现“跟踪属性”对话框-, s* O6 C8 C5 ?) [5 e
您只需单击“运行”即可开始运行默认跟踪。然后只需执行您的存储过程,并在SQL Profiler中看到它-它会显示持续时间,读取次数等。
2 w7 \: W" A" ^3)使用比您已有的数据量大得多的数据进行测试。如果使用少量数据进行测试,则通常仅凭持续时间很难发现差异。
6 W3 y. L) j2 @! x# h; w我最近在这里写了一篇关于如何公平地测试查询的不同变体的性能的博客,其中详细介绍了如何执行此查询。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则