分类:
编程软件 Java 中间件 Elasticsearch 前端开发 kafka 云计算大数据 Lua zookeeper PHP 网络与运维 项目构建管理 ActiveMQ 办公应用软件 Memcached RabbitMQ Sentinel Nacos
南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗 南玻医疗

Oracle优化配置指南(4)-Oracle的优化器

2019-03-28 10:59|来源: 道长A

4.Oracle的优化器

Oracle的优化器有两种优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO),在Oracle8及以后的版本,Oracle强列推荐用CBO的方式。

RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。

CBO方式:它是看语句的代价(Cost),这里的代价主要指cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息。

注意:走索引不一定就是优的,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时全表扫描(full table scan)是最好。

优化模式包括RuleChooseFirst rowsAll rows四种方式:

Rule:基于规则的方式。

Choose:默认的情况下Oracle用的便是这种方式。指的是当一个表或或索引有统计信息时,走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。

First Rows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。

All Rows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量。没有统计信息则走RBO的方式。

为什么表的某个字段明明有索引,但执行计划却不走索引?

1、优化模式是all_rows的方式

2、表作过analyze,有统计信息

3、表很小,上文提到过的,Oracle的优化器认为不值得走索引。

本文链接:领悟书生教程网

相关问答

更多

oracle性能优化

参加过CUUG的Oracle性能优化网络公开课,网上应该有录制的视频,讲得不错。 网上也有很多oracle性能优化的技术文章啊,发不了链接,你百度一下oracle网络公开课就有了!

如何对Oracle进行优化

Oracle有很多值得学习的地方,这里我们主要介绍Oracle优化,包括介绍可变参数的Oracle优化等方面。数据库系统和操作系统一样,在计算机上安装成功后,还需要进一步配置和优化,从而使其具有更强大的功能和运行在最佳状态。如果在设计阶段因为各种因素没有进行较为合理的配置和计划,那么就需要在后期对数据库系统进行优化。 数据库系统性能的优化,除了在设计阶段对其逻辑存储结构和物理存储结构设计进行优化,使之在满足需求条件下,时空开销性能最佳外,还可在运行阶段,采取一些优化措施,使系统性能最佳。本专题所

如何设置Oracle默认的优化器

ORACLE有两种优化器,目前多数版本默认是基于成本的优化器,即CBO,这也是大多数查询语句所使用的,通过使用HINT提示(/* +rule */),可使用基于规则的优化器(RBO)。 select /* +rule */ from emp;

oracle plsql 如何优化sql?

不+ where 条件 的查询语句 oracle 的查询优化器 会自动在 查询的过程中优化你的查询语句,你写了where 条件之后 如果查询的字段没有索引,查询优化器是不做任何优化的。

生产代码中的Oracle优化器提示是否明智?(Are Oracle optimizer-hints wise in production code?)

在提示普遍的情况下,通常是因为过去有人优先考虑解决尖锐问题而不是处理潜在的统计问题。 这种优先排序完全有可能是合理的(特别是在当时),但它引入了可能需要偿还的技术债务。 当系统由于查询计划发生变化而变得无法响应并且效率大大降低时,修复严重生产问题通常优先于识别根本原因。 对单个查询进行提示通常比找出潜在问题更快更容易,或者学习如何使用Oracle提供的各种工具来确保查询计划的稳定性或随着时间的推移制定计划。 当然,在单个查询上打了一个创可贴,如果你不花时间去理解为什么统计数据会将优化器发送到错误

相关文章

更多

最近更新

更多