sql-server – 运行不同解释计划的两个独立的SQL Server实例

前端之家收集整理的这篇文章主要介绍了sql-server – 运行不同解释计划的两个独立的SQL Server实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我需要sql管理员帮助的地方.我在Amazon EC2上有两个单独的sql Server实例.一个是我们的临时环境,另一个是我们的生产环境,但它们的配置方式完全相同(从同一图像中生成).

我们有一个数据库,我们上周从登台复制到我们的生产环境.我们将数据库复制到生产的方式是在备份站点上对其进行备份,并在生产中恢复备份.无论如何,我们发现在生产中,一个特定的复杂查询在一小时后超时,但我们的暂存环境中的确切查询在10分钟内完成.

关于两者的解释计划几乎是相同的,除了在一个服务器上它在大表(8M行)上进行PK扫描,而在另一个表上它正在进行索引搜索.我们假设这是不同的.因此,一台服务器正在执行大量磁盘IO,而另一台服务器则没有.

所以我的问题是,一个安装sql服务器决定使用索引的原因是什么,而另一个忽略它 – 假设相同版本的sql服务器和相同的数据集?更好的是,找出sql忽略索引的最佳方法是什么?

解决方法

sql Server使用统计信息来确定查询执行计划.

通常,它们在相同的数据集上应该是相同的,但是其中一台机器上可能存在过时的统计信息.

使用sp_updatestats更新两台计算机上的统计信息.

此外,我不熟悉Amazon EC2,但运行这两个实例的计算机可能安装了不同数量cpu(或者可供sql Server使用).优化程序也会考虑这一点.

原文链接:https://www.f2er.com/mssql/76879.html

猜你在找的MsSQL相关文章