8

我正在为将在中生成一些业务逻辑的应用程序创建一个存储过程。如何检查存储过程的性能,如速度、准确性等。任何想法或方向将不胜感激

4

1 回答 1

17

就个人而言,当我测试存储过程的速度时,我使用类似于以下内容:

DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;

GO

SET STATISTICS TIME ON;
SET STATISTICS IO ON;

GO

EXEC <my sproc> [args]

DBCC FREEPROCCACHE

使用 DBCC FREEPROCCACHE 清除过程缓存。例如,释放过程缓存会导致重新编译即席 SQL 语句,而不是从缓存中重用。如果通过 SQL Profiler 观察,可以观察到 DBCC FREEPROCCACHE 开始工作时发生的 Cache Remove 事件。DBCC FREEPROCCACHE 将使优化器缓存在内存中的所有存储过程计划无效,并强制 SQL Server 在下次运行这些过程时编译新计划。

DBCC 删除缓冲区

使用 DBCC DROPCLEANBUFFERS 使用冷缓冲区缓存测试查询,而无需关闭并重新启动服务器。DBCC DROPCLEANBUFFERS 用于清空数据缓存。由于先前执行查询而加载到缓冲区高速缓存中的任何数据都将被删除。

以上无耻盗取自:这篇博文

设置统计时间

显示解析、编译和执行每条语句所需的毫秒数。

进一步阅读 (MSDN)

设置统计 IO 开启

使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。

进一步阅读 (MSDN)

至于查询的准确性,这是您作为开发人员必须查看的内容。我认为没有一种自动化的方法来测试准确性。

希望这会让你开始。

注意:我在 SSMS 中执行此操作

于 2012-11-07T20:21:24.123 回答