暂无图片
pg中当一个执行时间很长的sql,没有运行完,这个时候发现统计信息过旧,如果我重新收集的话,正在运行的语句能使用吗?
我来答
分享
暂无图片 匿名用户
pg中当一个执行时间很长的sql,没有运行完,这个时候发现统计信息过旧,如果我重新收集的话,正在运行的语句能使用吗?

pg中当一个执行时间很长的sql,没有运行完,这个时候发现统计信息过旧,如果我重新收集的话,正在运行的语句能使用到刚刚收集的统计信息吗?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
张sir

不会用到最新的统计信息。这个技术在oracle19c里有,叫自适应执行计划,在sql运行过程中,如果发现统计信息太旧,会用真正的返回的数据行数改变执行路径,比如根据统计信息评估的执行计划走nest loop,那说明驱动表返回行数比较少,如果再运行过程中,发现驱动表返回的行数很多,那执行计划可能会变成hash join。在pg里还做不到这个。

暂无图片 评论
暂无图片 有用 1
暂无图片
李宏达

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏