有一个你必须运行的“最佳实践”
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
在对 SQL 查询进行性能分析之前。
然而,例如后一个 DROPCLEANBUFFERS:
使用 DBCC DROPCLEANBUFFERS 测试带有冷缓冲区缓存的查询
无需关闭并重新启动服务器。
要从缓冲池中删除干净的缓冲区,首先使用 CHECKPOINT 来
产生冷缓冲区高速缓存。这会强制所有脏页
当前数据库写入磁盘并清理缓冲区。后
执行此操作后,您可以发出 DBCC DROPCLEANBUFFERS 命令来删除所有
来自缓冲池的缓冲区。
我想,这意味着您将测试您的查询,就好像它是在服务器中运行的第一个查询一样,因此查询的实际“现实生活”影响会更低。
是否真的建议运行这三个命令来了解查询成本,或者它是否会为您带来与实时环境中的实际查询时间没有密切关系的相当经验的结果?
我不同意这是最佳实践,而且很少使用它。
我调整的查询应该是流行的、经常运行的查询。这对我来说是最划算的。无论是计划还是数据,很少应该“冷”运行。
我正在测试查询执行:不是磁盘读取系统或查询优化器编译
不久前在 DBA.SE 上有人问过这个问题。请看这些
- https://dba.stackexchange.com/a/10820/630 https://dba.stackexchange.com/a/10820/630
- https://dba.stackexchange.com/a/7870/630 https://dba.stackexchange.com/a/7870/630
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)