|
1 请讲述你在实际工作中最满意的一次oracle性能诊断经过?
性能问题有那么几种,一种是间歇性性能问题,还有一种是固定出现性能问题;
对于固定出现的问题,还比较容易处理,个人觉得一般来说都与开发或者设计有一定的联系。
有一次在客户开发现场,我们的同事说,最近两天系统运行一会儿就会变得很慢,我们就现场看了一下当时系统的等待事件,
查系统视图发现一张大表索引丢失。最后发现原因是,同事用CTAS 建表,忘记创建索引导致的,也就是说,这类问题是比较容易发现和解决的;
然而,间歇性的问题的话,可能就没那么容易,也许涉及到隐含参数,中间件的配置参数,甚至触发了BUG;
也就是说,在你接触系统的时候可能没有性能问题,然而并不知道什么时候出现问题;
那么就可能用到AWR,ASH 等报告。
2 请讲述你认为的oracle性能诊断和Oracle开发之间的关系?
我觉得有很多本质性的性能改进需要有开发的支持。必须要懂业务逻辑才能写出最优的SQL;
这个月遇到的一个性能问题,开发为了不改写业务代码,在视图中拼接了一段union all,导致使用这个视图的功能点都比较慢;
发现SQL 并未进行谓词推进,那么,我就试着加了个 push_pred(E),运行速度确实有所改善;
如果在代码中分别对两段数据进行处理的话,效率还有近5倍的提升。
3 请讲述你在oracle性能诊断方面的失误及教训?
之前针对一个字段添加过函数索引。那个函数的逻辑是按照时间找当前部门的直属公司,这个函数中有递归查询。
通过加函数索引,查询的速度确实有本质提高,但是插入数据,直接报系统错误。
现在还不知道这类问题怎么处理
4 请推荐你在oracle性能诊断方面使用的工具?
SQLT,AWR,ASH
还有国内外一些大师写过的脚本都用过;
单最常用的还是官方提供的一些内置工具;
|
|