ORACLE优化器详解:规则、成本和选择性优化
需积分: 7 160 浏览量
更新于2024-09-06
收藏 35KB DOCX 举报
Oracle 优化
Oracle 优化是指对 Oracle 数据库进行优化,以提高数据库的性能和效率。Oracle 优化可以从多个方面入手,包括优化器、索引、SQL 语句优化、数据存储优化等。
**优化器**
Oracle 优化器共有三种:基于规则(RULE)、基于成本(COST)和选择性(CHOOSE)。其中,基于规则的优化器根据预定义的规则来选择执行路径,而基于成本的优化器则根据执行成本来选择执行路径。选择性优化器则根据是否运行过 analyze 命令来选择优化器模式。如果 table 已经被 analyze 过,优化器模式将自动成为基于成本的优化器,反之,数据库将采用基于规则的优化器。
**访问 Table 的方式**
Oracle 访问表中记录的方式有两种:全表扫描和通过 ROWID 访问表。全表扫描就是顺序地访问表中每条记录,Oracle 采用一次读入多个数据块的方式优化全表扫描。通过 ROWID 访问表可以提高访问表的效率,ROWID 包含了表中记录的物理位置信息。Oracle 采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。
**共享 SQL 语句**
共享 SQL 语句是 Oracle 的一个功能,可以避免重复解析相同的 SQL 语句。在第一次解析之后,Oracle 将 SQL 语句存放在内存中。这块位于系统全局区域(SGA)中的内存可以被所有的数据库用户共享。因此,当你执行一个 SQL 语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,Oracle 就能很快获得已经被解析的语句以及最好的执行路径。
**索引**
索引是 Oracle 中的一种数据结构,用于提高查询性能。索引提供了快速访问 ROWID 的方法,因此那些基于索引列的查询就可以得到性能上的提高。
**优化技巧**
1. 使用基于成本的优化器(CBO),可以提高查询性能。
2. 经常运行 analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。
3. 避免使用选择性优化器(CHOOSE),而直接采用基于规则或者基于成本的优化器。
4. 使用索引,可以提高查询性能。
5. 尽量避免使用全表扫描,而使用基于 ROWID 的访问方式。
Oracle 优化是一个复杂的过程,需要考虑多个方面的因素,包括优化器、索引、SQL 语句优化、数据存储优化等。通过合理的优化技巧,可以提高 Oracle 数据库的性能和效率。
2008-08-19 上传
2021-09-22 上传
2011-10-24 上传
2014-03-03 上传
2008-10-26 上传
1652 浏览量
普通网友
- 粉丝: 12
- 资源: 3
最新资源
- centural_datapack:实时原型制作
- htmlsplit:根据原始标记中的意图,将 HTML 文档拆分为多行
- noise-suppression
- jdbcTemplate-runtime-update:使用Spring Boot在运行时更改DataSources和JdbcTemplate
- GEF-whole-upload,java项目源码,javaoa系统源码下载
- 加登比
- ltsycal0126.zip
- 2.movie-seat-booking
- 科学计算器ZENO-5000
- code_FIV:FIV的后处理
- drabbitmq:QAMQP源码解析,工作量,重新分配,公平分配,订阅发布,主题模式,路由模式,确认机制
- TestStrutsBBS,查看java源码,java校友录网站
- thamilthedal.github.io
- adventofcode2020_googlecolab
- Credit-number-generator:用于生成和验证信用卡号的基本网站
- arduino-moisture:使用 mongo + express 构建的 RESTful API 服务器,用于存储来自我的工厂的数据