从绩效调整的角度来看哪一个更重要?
假设一个查询报告了包含大约200万条记录的表上的30次扫描和148次逻辑读取。
同一查询的修改版本报告1次扫描,1400次逻辑读取。第二个查询执行的CPU时间减少约40ms。第二个查询更好吗?
我是这么认为的,这是我的论文:
在第一种情况下,我们在非常大的表上进行了大量扫描。这在CPU和服务器内存上代价很高,因为表中的所有行都必须加载到内存中。执行这样的查询数千次将对服务器资源造成负担。
在第二种情况下,即使我们正在积累更多的逻辑读取,我们的扫描也会减少。由于逻辑读取有效地对应于从高速缓存读取的页面数量,因此这里的瓶颈将是将结果返回给客户端的网络带宽。在这种情况下,SQL Server必须执行的实际工作要少。
你有什么想法?
答案 0 :(得分:0)
逻辑读取指标大多不相关。您关心的是经过的时间,花费的CPU时间和使用的磁盘资源。你为什么要关心逻辑读取?它们通过查看CPU时间来计算。
如果您希望查询更快,请测量挂钟时间。如果要使用更少的资源来测量CPU和物理IO。