查询基准测试

3

前言

我对使用本地SQL聚合函数和SSIS中提供的聚合函数之间的性能差异有一个假设(数据库将崩溃SSIS)。我想开发一个经验过程来测试它。

在最初的测试中,我唯一关心的是执行速度。后续迭代将涵盖CPU和内存成本。

为了实现这一点,我建立了一个小表(1亿行),并想捕获时间差异。我计划通过比较OnPreExecute和OnPostExecute的时间来在一个SSIS包中完成所有操作。

第一个数据流的形式将采用SELECT * FROM TABLE,而后者则是SELECT Aggregate(col1) FROM TABLE

SSIS Aggregate vs Database Aggregate

类似的问题,但不是我要找的

tl;dr;

为了尽可能地使评估变得平衡,我应该

  • 在步骤之间清除缓存
  • 通过预先执行查询来预热缓存
  • 其他操作

如果决定清除缓存,则dbcc freeproccache是否足够,还是需要dbcc dropcleanbuffers

1个回答

5

我认为你真的想在运行之间清除页面缓存。

如果是我,我会运行类似以下的命令:

DBCC FREEPROCCACHE
CHECKPOINT
DBCC DROPCLEANBUFFERS
FREEPROCCACHE 仅清除计划缓存,与数据页面无关。 CHECKPOINT 将刷新所有脏页面到磁盘。 DROPCLEANBUFFERS 将清除数据页面的缓冲池。
我建议在 SSMS 中执行任何命令时使用 SET STATISTICS IO ONSET_STATISTICS TIME ON

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接