前段时间给客户处理性能问题,遇到一个新问题,
客户的架构用的是 alwayson ,并且硬件用的是4路96核心,内存1T ,全固态闪存盘,sql server 2016 。
问题 描述
客户经常出现系统卡住的现象,从当时跟踪的语句执行情况看
是被卡住了,但每次的阻塞源头都不一样,当时临时的解决方法是把主副本做切换,然后再切换回来。
事后对系统事件及sqlserver 的日志进行分析,发现如下报错:
根据当时的等待资源及报错信息,怀疑是开了 查询存储(Query Store) 造成的,随后发现客户这里的 数据库中果真是开了 Query Store 选项,
为了验证是否与 Query Store 有关,我们经与客户协商,把这个选项关掉,目前已经运行两周了,卡慢现象没有在发生。
顺便提一下,客户的系统非常复杂数据量也很大,有些过程的代码有400行以上,所以生成的计划也相当的可观,应该是在这种情况下造成 Query Store 不但不能有性能的提升,反而消耗了相当可观的服务器资源,所以 Query Store并不是开启就是最优的选择,要根据自身的系统情况而定。