SQL Server 查询存储,做查询优化的利器

介绍一个SQL Server 2016后新增的功能:查询存储。查询存储的工作原理类似于飞行数据记录器或者黑匣子,不断地收集与查询和计划相关的编译和运行时信息,包括已执行查询的历史记录,查询运行时执行统计信息,针对执行计划的执行计划等。与查询相关的数据将永久保存在内部表中,并通过一组视图向用户显示。通过这些信息,可以快速查找性能差异,识别由查询计划更改和故障排除引起的性能等等问题。

通过以下命令或者SSMS界面进行开启

ALTER DATABASE [DatabaseOne] SET QUERY_STORE = ON;
 

官方对内部对应的一些表,详细描述如下

 

查看

说明

sys.query_store_query_text

提供对数据库执行的唯一查询文本。 将忽略查询文本之前和之后的注释和空格。 不忽略文本内部的注释和空格。 批中每个语句都会生成单独的查询文本项。

sys.query_context_settings

显示执行查询所依据的影响计划的设置的非重复组合。 由于 context_settings_id 是查询键的一部分,因此采用影响计划的不同设置执行的相同查询文本将在查询存储中生成单独的查询条目。

sys.query_store_query

在查询存储中单独进行跟踪和强制执行的查询条目。 如果查询文本在不同的上下文设置下执行,或在不同的 Transact-SQL 模块(例如,存储过程和触发器等)内外执行,则可以产生多个查询条目。

sys.query_store_plan

显示具有编译时间统计信息的查询估计计划。 存储计划相当于一个可以通过使用 SET SHOWPLAN_XML ON 获取的计划。

sys.query_store_runtime_stats_interval

查询存储将时间划分为自动生成的时间窗口(间隔),并根据每个执行计划的间隔存储聚合的统计信息。 间隔大小由(位于 Management Studio 中)的配置选项“统计信息收集间隔”或由使用 ALTER DATABASE SET Options (Transact-SQL) 的 INTERVAL_LENGTH_MINUTES 进行控制。

sys.query_store_runtime_stats

执行计划的聚合运行时统计信息。 所有捕获的指标都以 4 种统计函数的形式表示:平均值、最小值、最大值、标准偏差。

当然,这种类似的节点信息收集的东西,其实并不适合查询频率过大的查询,经过非严谨测试,性能损耗大概在5%左右。

做过DB性能优化的人应该都知道,以前我们要么通过持续性的日志记录分析,要么通过实时的监控去找到对应的性能瓶颈,包括CPU、内存、IO等,查询存储其实就是在此基础上更进一步,把我们关心的点都存储起来,并且有更详尽信息和标准分析报告,相当省事。

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器