一尘不染

在运行性能比较之前清除缓存的 SQL Server 命令

sql-server

在比较两个不同查询的执行时间时,清除缓存以确保第一个查询的执行不会改变第二个查询的性能很重要。

在 Google 搜索中,我可以找到以下命令:

DBCC FREESYSTEMCACHE
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE

事实上,我的查询在多次执行后比以前花费了更实际的时间来完成。但是,我不确定这是推荐的技术。

最佳做法是什么?


阅读 72

收藏
2022-11-03

共1个答案

一尘不染

就个人而言,对于一个常见的查询,第二次和后续的执行更重要。

您是在测试磁盘 IO 还是查询性能?

假设您的查询经常运行并且很关键,那么您希望在现实生活条件下对其进行测量。而且您不想每次都清除产品服务器缓存…

如果你愿意,你可以:

  • DBCC DROPCLEANBUFFERS从缓冲池中清除干净(未修改的)页面 在此
    之前CHECKPOINT先将任何脏页面刷新到磁盘
  • DBCC FLUSHPROCINDB清除该数据库的执行计划
2022-11-03