【发布时间】:2017-04-02 12:01:03
【问题描述】:
我有 2 个相同的 VM(16 个 vCPU,RAM:64GB),具有相同的数据库、相同的表和视图以及相同的行数。 View1 有 470 万行。
在 VM1 (UAT) 上,SELECT TOP 1000 .. FROM View1 会在不到 1 秒的时间内回答。
在 VM2 (PROD) 上,相同的查询在 4 分钟内得到答复。
我检查了数据库、表、view1 的属性,没有发现 VM1 和 VM2 之间有任何区别。 我检查了统计数据,但它表明无需刷新任何内容。
VM2 上的执行计划显示:
- 估计执行次数:1000
- 执行次数:4.2M
在 VM1 上:
- 估计执行次数:1000
- 执行次数:900
应该与 VM1 (UAT) 完全相同的 VM2 (PROD) 可能存在什么问题?
这是两个 VM 上“SELECT TOP 1000 .. FROM View1”的执行计划:
Execution plans on both VM: UAT and PROD
它们看起来非常相似。
这是 UAT 与 PROD 的统计数据:
什么可以解释两种环境之间逻辑读取(和预读)数量的巨大差异???
提前感谢您帮助我了解这个“奥秘”。
【问题讨论】:
-
可以添加完整的执行计划吗?
-
完成!希望它可以帮助:)
标签: sql-server performance sql-server-2014