统计信息自动收集时间窗口导致分区表执行计划错误

这次上海用户报告一个奇怪的问题,本来运行正常的程序,变得非常慢,让我帮忙查找一下原因。 很快定位到其中是数据库查询语句慢导致的。获取该语句的执行计划

很奇怪明明是应该对分区全表扫描的,怎么变成了对索引范围扫描, 查看表和索引的统计信息 查看该分区的行数
奇怪,怎么统计信息是错的,执行计划错误出现的原因找到了。但是为什么会这样呢。原来我将该表的分区时间设为每天的0点,有时用户会将第二天的数据错误的发过来,导致提前创建了分区,结果晚上10点到第二天凌晨2点维护窗口启动时,自动收集统计信息任务启动,收集了统计信息,但是对该分区,这些信息是错误的,所以oracle生成错误的执行计划。知道原因就好改了,将分区改为从中午12点开始。修改好后,收集统计信息,执行计划正常,用户程序恢复正常。以后也没有报这个错误了。

这次执行计划的原因很快被找到,但是为什么会这样花了点时间排查,算是一次难得的经历。

发布了58 篇原创文章 · 获赞 3 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/lldustc/article/details/53292287