Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2014-某些查询速度非常慢(基数估计器)_Sql_Sql Server_Tsql_Sql Server 2014_Cardinality Estimation - Fatal编程技术网

SQL Server 2014-某些查询速度非常慢(基数估计器)

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+重建索引+更新统计信息 但是现在我们遇到了一

在我们的生产环境中,我们有几个使用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及更早版本的基数估计模型

根据数据库的兼容性级别设置查询优化器基数估计模型

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;