针对可扩展性和性能的增强功能(数据库引擎)
数据库引擎 中针对可扩展性和性能的增强功能包括筛选的索引和统计信息、新的表和查询提示以及新的查询性能和处理功能。
筛选的索引和统计信息
在 SQL Server 2008 中,可以使用谓词在表中行的子集上创建筛选的索引和统计信息。在 SQL Server 的早期版本中,索引和统计信息是在表中的所有行上创建的。筛选的索引和统计信息尤其适合于从定义完善的数据子集(比如,主要为 NULL 值的列、包含异类类别值的列以及包含非重复范围值的列)进行相应选择的查询。
与全表索引相比,设计良好的筛选索引可以提高查询性能、减少索引维护开销并且可降低索引存储开销。有关详细信息,请参阅筛选索引设计准则。筛选的统计信息可以提高查询计划质量,因为它们仅覆盖筛选的索引中的行。数据库引擎可自动为筛选索引创建和维护筛选的统计信息。还可以在非索引列上创建筛选的统计信息,以改进不需要筛选索引的数据子集的查询计划质量。有关详细信息,请参阅使用统计信息提高查询性能。
表提示和查询提示
OPTIMIZE FOR 查询提示选项包括 UNKNOWN 变量值
OPTIMIZE FOR 查询提示选项通过 UNKNOWN 语法得以增强,该语法指定数据库引擎使用统计数据来确定在查询优化期间一个或多个本地变量的值,而不是初始值。可以为查询中的所有本地变量指定该语法,也可以为一个或多个命名本地变量指定该语法。有关详细信息,请参阅查询提示 (Transact-SQL)。
查询提示
表提示现在可以指定为查询提示,以提供高级查询性能调整选项。我们建议仅在计划指南的上下文中将表提示用作查询提示。有关详细信息,请参阅查询提示 (Transact-SQL) 和在计划指南中使用 INDEX 和 FORCESEEK 查询提示。
表提示
现已添加 FORCESEEK 表提示,以提供高级查询性能调整选项。该提示指定查询优化器仅使用索引查找操作作为访问查询中所引用表或视图中的数据的途经。有关详细信息,请参阅使用 FORCESEEK 表提示。
查询性能和处理
锁升级选项
ALTER TABLE 的新 LOCK_ESCALATION 选项允许禁用表上的锁升级。在分区表上,可以将锁配置为对分区而不是对整个表进行升级。该选项可以减少在使用分区表时的锁争用,从而改进并发性能。有关详细信息,请参阅 ALTER TABLE (Transact-SQL)。
优化位图筛选
查询优化器可以将位图筛选器动态放入并行查询计划中,以便针对星型架构改进查询性能。经过优化的位图筛选可以提前在查询计划中从事实数据表内删除不合格行,从而大幅改进这些数据仓库查询的性能。有关详细信息,请参阅通过位图筛选优化数据仓库查询性能。
分区对象上的并行查询处理
SQL Server 2008 提高了很多并行计划的分区表的查询处理性能,并更改了并行和串行计划的表示方式,还增强了在编译时和运行时执行计划中提供的分区信息。SQL Server 2008 自动执行并改进了在分区的对象上的并行查询执行计划的线程分区策略。有关详细信息,请参阅关于已分区表和索引的查询处理增强功能。
计划指南
sp_create_plan_guide 存储过程已扩展为直接在 @hints 参数中接受 XML 显示计划输出,而不是在 USE PLAN 提示中嵌入输出。这将简化应用固定查询计划作为计划指南提示的过程。此外,新存储过程 sp_create_plan_guide_from_handle 允许在计划缓存中从查询计划创建一个或多个计划指南。
可以为相同的查询和批或模块创建多个 OBJECT 或 SQL 计划指南。但是,在任何给定的时间只能启用这些计划指南中的一个。
新系统函数 sys.fn_validate_plan_guide 可以用于验证计划指南。在对数据库的物理设计进行诸如删除索引这样的更改之后,计划指南会变得无效。通过验证计划指南,可以确定计划指南是否可以被查询优化器以不做任何修改的方式使用。
新事件类 Plan Guide Successful 和 Plan Guide Unsuccessful 使验证查询优化器是否正在使用计划指南变得更容易。当 SQL Server 无法为包含计划指南的查询产生执行计划时,将在不使用计划指南的情况下自动编译查询。初始计划指南编译失败后,会发生 Plan Guide Unsuccessful 事件。
SQL Server:SQL Statistics 对象 中的新计数器 Guided Plan Executions/sec 和 Misguided Plan Executions/sec 可以用于监视已通过使用计划指南生成查询计划成功或失败的计划执行数。
通过使用 SQL Server Management Studio,可以执行诸如创建、删除、启用、禁用或脚本计划指南这样的操作。在对象资源管理器中,计划指南出现在“可编程性”文件夹下。
查找和调整相似查询的哈希值
搜索资源密集查询时,应当考虑如何发现并调整各自使用的都为最小系统资源但整体使用了大量系统资源的相似查询。sys.dm_exec_query_stats 和 sys.dm_exec_requests 目录视图提供的查询哈希和查询计划哈希值可以用于帮助确定相似查询和相似查询执行计划的聚合资源使用情况。有关详细信息,请参阅使用查询和查询计划哈希值查找和优化类似查询。