服务器性能不足是否会引起执行计划变更的问题
最近遇到一个自己难以解决的数据库问题,数据库基本信息如下:
1.实例只包含一个主要的库,数据文件大小250GB,简单模式,数据库版本为SQL Server 10.50.1600(2008R2)。
2.数据库里最大的一张表,这里简称为T表,数据量为5.5亿,其他有2-3个500W行的表,剩下的都不到10W。
3.服务器内存大小16GB,8线程。SQL Server实例限制内存是4GB-10GB。
最近一个常用的业务SQL出现了执行计划的偏差,这个SQL是3表关联的,有这很好的过滤条件和很棒的连接条件,执行计划正常时是通过滤条件和连接条件进行一层一层索引查找和键查找最后从T表中取到数据的,最后的结果集也很小不到100条,但是某个时刻后执行计划突然出现偏差,前两个表的连接正常,但是针对T表的连接条件却走了索引扫描,由于关联列都是非空且存在单列索引的自增列,数据分布非常均匀,所以很难知道为何执行计划突然出现偏差?
此外更新T表关联列的统计信息也无效,整个表的碎片都很正常,最后是删掉关联列的索引新建之后执行计划才重新正常的。特来此求助时候有人遇到过此类问题?谢谢
后来第二次出现问题后无意间直接把实例内存限制到最大内存8GB,语句又重新正常了,这就很困惑了。。。