SQL Server 2014-某些查询速度非常慢(基数估计器)
在我们的生产环境中,我们有几个使用SQL server 2012 SP2+Windows server 2008R2的服务器。3个月前,我们将所有服务器迁移到SQL Server 2014 SP1+Windows Server 2012 R1。我们创建了具有新配置的新服务器—更多RAM、更多CPU、更多磁盘空间,并从SQL Server 2012->恢复到新的SQL Server 2014服务器备份数据库。恢复后,我们将兼容性级别从110更改为120+重建索引+更新统计信息 但是现在我们遇到了一些问题,当兼容性级别为120时,这些查询运行速度非常慢。如果我们将兼容性级别更改为旧的110,它将运行得非常快 我搜索了很多关于这个问题的信息,但什么也没找到 SQL Server 2014推出 SQL Server 2014的性能改进之一是重新设计基数估计。进行基数估计CE的分量称为基数估计量。它是SQL查询处理器生成查询计划的基本组件。基数估计是对最终行数和中间结果(如联接、筛选和聚合)行数的预测。这些估计直接影响计划选择,如连接顺序、连接类型等。在SQL Server 2014之前,基数估计主要基于SQL Server 7.0代码库。SQL Server 2014引入了新的设计,新的基数估计器基于对现代工作负载的研究和对过去经验的学习 跟踪标志9481和2312可用于控制使用哪种版本的基数估计器 检查导致问题的查询,并比较执行计划属性2008年和2014年的估计行数与实际行数值 在SQL Server 2016+中,您可以为每个数据库设置旧的基数估计器,而无需使用traceflags或将数据库兼容性级别更改为110 此语句支持在单个数据库级别配置多个数据库配置设置,与任何其他数据库的这些设置无关 遗留_基数_估计={ON | OFF | PRIMARY} 使您能够将查询优化器基数估计模型设置为SQL Server 2012及更早版本,而与数据库的兼容级别无关。这相当于跟踪标志9481。要在实例级别进行设置,请参阅跟踪标志Transact-SQL。要在查询级别完成此操作,请添加QUERYTRACEON查询提示 在 将查询优化器基数估计模型设置为SQL Server 2012及更早版本的基数估计模型 关 根据数据库的兼容性级别设置查询优化器基数估计模型SQL Server 2014-某些查询速度非常慢(基数估计器),sql,sql-server,tsql,sql-server-2014,cardinality-estimation,Sql,Sql Server,Tsql,Sql Server 2014,Cardinality Estimation,在我们的生产环境中,我们有几个使用SQL server 2012 SP2+Windows server 2008R2的服务器。3个月前,我们将所有服务器迁移到SQL Server 2014 SP1+Windows Server 2012 R1。我们创建了具有新配置的新服务器—更多RAM、更多CPU、更多磁盘空间,并从SQL Server 2012->恢复到新的SQL Server 2014服务器备份数据库。恢复后,我们将兼容性级别从110更改为120+重建索引+更新统计信息 但是现在我们遇到了一
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;