“月底难过”- 都是统计信息惹的祸

作者简介

案例说明

某大型电商公司数据仓库系统经常出现在月底运行缓慢的情况,但在平时系统运行却非常正常。这是因为月底往往有月报等大批量作业运行,而就在这个时间点上,常常会出现缓慢情况,因此业务人员一到月底就非常紧张。这也成了一个老大难问题,困扰了很长时间。

DBA介入处理,发现一个很奇怪的现象:某条主要SQL是造成执行缓慢的主因,其执行计划是不确定的,也就是说因为执行计划的改变,导致其运行效率不同。而往往较差的执行计划发生在月底几天,且由于月底大批作业的影响,整体性能比较饱和,更突显了这个问题。针对某个出现问题的时间段,做了进一步分析,结果表明是由于统计信息的缺失导致了优化器产生了较差的执行计划,并据此指定了人工策略,彻底解决了这个问题。

1、问题分析

执行计划如下:

执行计划中,多表关联并用了嵌套循环,这点对于OLAP系统来说是比较少见的。一般优化器更倾向于使用SM和HJ。进一步检查发现其成本竟然是0,怪不得优化器使用了嵌套循环。

2、深入分析

检查发现索引数据统计信息异常,这是分区索引,仅两天的分区统计信息都是0。导致优化器认为嵌套循环的执行效率更高,而不是使用哈希连接。结合业务发现,月底是业务高峰期,对于系统统计信息的作业收集,在指定的时间窗口内无法完成。最后导致统计信息不完整,优化器采用了错误的执行计划。

3、解决方案

解决的代码如下

分析完对象的统计信息即恢复正常。

案例启示

统计信息是优化器优化的重要参考依据,一个完整、准确的统计信息是必要条件。往往在优化过程中,第一步就是查看相关对象的统计信息。

分区机制是Oracle针对大数据的重要解决手段,但其也很容易造成所谓“放大效应”。即对于普通表而言,统计信息更新不及时可能不会导致执行计划偏差过大;但对于分区表、索引来说,很容易出现因更新不及时出现0的情况,进而导致执行计划产生严重偏差。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

电气自动化工程师的注意事项

1、精通工艺过程 自动化工程师往往关注控制方案和方法,而不重视工艺原理,这种想法是不可取的。例如,在锅炉控制系统中,汽包液位是一个重要的控制参数,它反映了锅炉...

2566
来自专栏MongoDB中文社区

为什么MongoDB适合深度学习?

当您正在考虑为新的深度学习项目选择何种数据库时,您可以访问这个链接所对应的帖子(https://www.mongodb.com/blog/post/deep-l...

871
来自专栏大数据和云计算技术

数据库存储模型简述

数据库现在应该是无人不知,无人不晓,讲到数据库必然要提到两个人: 1、一个是E.F. Codd,这个是理论的开创者,来瞻仰下: ? 埃德加·弗兰克·科德(Ed...

3655
来自专栏CSDN技术头条

谷歌的海量数据排序实验史

原文:History of massive-scale sorting experiments at Google 作者:Marian Dvor...

1878
来自专栏吉浦迅科技

推荐5种让数据库快的飞起的GPU加速产品

GPU承诺会彻底改变大数据分析领域,从当前来看,这并不是虚言,当我们数据量达到一定级别的时候,我们一定会转向使用GPU。大多数的数学密集型应用都包含机器学习框架...

3809
来自专栏数据派THU

数据蒋堂 | 计算封闭性导致臃肿的数据库

来源:数据蒋堂 作者:蒋步星 本文长度为1873字,建议阅读5分钟 本文讲述计算机的封闭性如何导致了臃肿的数据库。 许多大型用户的数据库(仓库)在运行多年之后,...

18110
来自专栏人工智能头条

深度 | 图计算系统进展和展望

2244
来自专栏AI科技评论

深度 | 如何评价微软在数据中心使用 FPGA ?

问题「用 FPGA 代替 CPU」中,这个「代替」的说法不准确。我们并不是不用 CPU 了,而是用 FPGA 加速适合它的计算任务,其他任务仍然在 CPU 上完...

4764
来自专栏ATYUN订阅号

思科公司发布强大的AI服务器UCS C480 ML M5

AI算法在理论上是很好的,但如果你没有强大的硬件来部署它们,它们基本上是无用的。使用传统计算机,复杂的模型可能需要数小时,数天甚至数周才能进行训练。

983
来自专栏智能算法

携程是如何把大数据用于实时风控的?

本文由携程技术中心投递,ID:ctriptech。作者:郁伟,携程技术中心风险控制部高级开发经理。2010加入携程,参与了携程结算平台、风控系统的开发,对系统架...

4518

扫码关注云+社区