【DB笔试面试602】在Oracle中,如何从执行计划初步判断SQL的性能问题?

  • 2019 年 10 月 10 日
  • 筆記

题目部分

在Oracle中,如何从执行计划初步判断SQL的性能问题?

答案部分

从以下几点去考虑:

l 执行计划关注点

l 预估返回行数

l 真实返回行与逻辑读比率

l 预估行数和真实返回行数的差异

l Predicate Information部分是否有隐式类型转换

l 递归调用(recursive calls)值是否过大

l 表的访问次数是否过大

l 注意表真实访问行数

l 查看是否在磁盘排序

l 注意A-Time时间列

l 注意Pstart、Pstop、PARTITION RANGE ALL

l 注意MERGE JOIN CARTESIAN

l 注意REMOTE分布式查询

l 注意动态采样

l 是否使用了某种固定执行计划的策略

详情可以从下表所示的几个方面去考虑:

此外,还有一些其它需要注意的地方,例如COST花费特别大的步骤、全表扫描的步骤、FILTER的操作等等,都是需要特别关注的地方,这里就不详细列举了,总之,看执行计划和看AWR报告一样,需要具有一双敏锐的鹰眼,最主要的是找出SQL的性能瓶颈。

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。