加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:26:22 所属栏目:MsSql教程 来源:网络整理
导读:这是我需要SQL管理员帮助的地方.我在Amazon EC2上有两个单独的SQL Server实例.一个是我们的临时环境,另一个是我们的生产环境,但它们的配置方式完全相同(从同一图像中生成). 我们有一个数据库,我们上周从登台复制到我们的生产环境.我们将数据库复制到生产的方
这是我需要SQL管理员帮助的地方.我在Amazon EC2上有两个单独的SQL Server实例.一个是我们的临时环境,另一个是我们的生产环境,但它们的配置方式完全相同(从同一图像中生成).

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

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

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读