在我们的 sql server 上,一个查询需要 20 毫秒。如果我查看执行计划,使用了并行性、哈希匹配、位图创建……很多带有两个箭头指向左侧的图像。
在我们的产品运行的客户的 sql server 上,相同的查询需要 2500 毫秒。如果我查看他们的执行计划,没有使用并行性或任何带有箭头的东西......
我已经搜索了几天,不知道为什么查询在他们的 sql 服务器上运行得这么慢。
- 并行性和所有其他东西可以在他们的 sql server 上配置吗?
- 以及如何配置它?
- 使用并行有什么危险?
另一个奇怪的是,在我们的服务器上,查询需要大约 1200 次读取和 0 次写入。在他们的 sql server 上,它需要 150 万次读取和大约 1500 次写入。为什么在读取查询完成时会写入这些内容?
如果您查看查询计划,您很可能会发现它不是纯粹的阅读,因为它涉及一些临时对象 - 显然 - 正在写入这些对象。paralellsim 的排序、合并都可能导致临时对象中的写入操作。
您可以在执行计划的每个步骤中看到读/写。
你检查了明显的吗?糟糕的硬件——糟糕的 CPU(不太可能)、没有足够的 RAM 和完全过载的 IO 子系统?如今,许多人虚拟化 SQL 服务器,不知何故,他们忘记了所有节省的成本,并在下面放置了一个垃圾 IO 子系统,这样您的 SQL 服务器就慢了很多——因为磁盘布局很糟糕。
我必须查看并比较两个执行计划(您可以在某处上传屏幕截图吗?或者最好上传导出的计划,以便我可以将它们加载到企业管理器中)。