在SQLServer2016之后引入了一个新功能:QueryStore。查询存储就像一个飞行数据记录器或黑匣子,不断收集与查询和计划相关的编译和运行时信息,包括执行查询的历史记录、查询运行时执行统计信息以及执行计划等待的执行计划。与查询相关的数据保存在内部表中,并通过一组视图显示给用户。有了这些信息,您可以快速找到性能差异,识别由查询计划更改引起的性能问题并进行故障排除等等。使用以下命令或SSMS接口打开ALTERDATABASE[DatabaseOne]SETQUERY_STORE=ON;启用查询存储前,启用查询存储,启用查询存储后,官方内部对应表详细说明如下。当然,这种类似节点信息的收集其实并不适合查询频率过高的查询。经过非严格测试,性能损失约为5%。做过DB性能优化的应该都知道,以往我们要么通过持续的日志记录分析,要么通过实时监控来寻找对应的性能瓶颈,包括CPU、内存、IO等,而查询存储其实是基于这更进一步,将我们关心的所有点都存储起来,并且有更详细的信息和标准的分析报告,这还是相当省事的。具体可以查看官方文档进行学习。
