about me:oracle ace pro,optimistic,passionate and harmonious. focus on oracle,mysql and other database programming,peformance tuning,db design, j2ee,linux/aix,architecture tech,etc
全部博文(166)
发布时间:2022-04-14 09:02:29
filter操作是执行计划中常见的操作,这种操作有两种情况:
1. 只有一个子节点,那么就是简单过滤操作。(不是本文重点)
2. 有多个子节点,那么就是类似nested loops操作,只不过与nested loops差别在于,filter内部会构建hash表(有缓存提高效率,缓存的bucket数目是1024个),对于重复匹配的,不会再次进行循环查找,而是利用已有结果,提高效率。但是一旦重复匹配的较少,循环次数多,也就是类似nested loops,那么这种filter操作将是严重影响性能的操作,可能你的sql几天都执行不完了。(本文讨论重点)
......
发布时间:2022-04-12 08:41:58
在oracle performance tuning guide中,对执行计划顺序的描述是最右最上最先执行,然后父步骤执行,也就是最右边的步骤最先执行,如果同等级,那么最上边的最先执行,然后执行其父步骤(文档原文:the execution order in explain plan output begins with the line that is the
furthest indented to the right. the next step is the parent of that line. if two lines
are indented equally, then the top line is normally executed first)。 在实际应用中,这个规则不是完全正确的。......
发布时间:2022-04-10 21:09:32
统计信息对cbo优化器很重要,而直方图又是统计信息中非常重要的内容,对于列倾斜数据(skew data),如果没有直方图,oracle可能会选择错误的执行计划,从而影响效率。
本文主要讲解如何通过执行计划观察是直方图引起的性能问题。
......
发布时间:2020-11-04 15:27:53
显式或隐式类型转换要走index full scan,必须增加not null约束或显示条件增加is not null才能走index (fast) full scan。
否则to_char(object_id)='100'这种条件只是告诉优化器,to_char(object_id)肯定is not null,
但是优化器不知道里面的参数object_id是否为null,所以不增加not null约束或不增加条件,肯定走不了index fast full scan,使用hints都不行
......
发布时间:2020-07-07 09:12:17
本文档从统计信息收集和更新流程几个值得注意的方面出发,着重有以下几点:
? 检查统计信息
? 收集统计信息
? 更新统计信息
......