Oracle 数据库优化培训
本篇文章主要介绍 Oracle 数据库优化的相关知识,涵盖了 SQL 语句执行过程、ORACLE 优化器、表之间的关联、如何得到 SQL 执行计划、如何分析执行计划等内容。
SQL 语句执行过程
SQL 语句处理的基本过程包括查询语句处理、DML 语句处理(insert, update, delete)、DDL 语句处理(create .., drop .., alter ..)、事务控制(commit, rollback)。
ORACLE 优化器
ORACLE 优化器是关系数据库管理系统中的一种重要组件,负责查询语句的优化。优化器的优化方式包括基于规则(RBO)和基于代价(CBO)两种。基于规则的优化方式遵循 Oracle 内部预定的规则,而基于代价的优化方式则依据语句执行的代价,主要指对 CPU 和内存的占用。
优化器的优化模式
ORACLE 优化器的优化模式主要有四种:Rule、Choose、First rows、All rows。其中,Choose 是默认模式,根据表或索引的统计信息,如果有统计信息,则使用 CBO 方式;如果没有统计信息,相应列有索引,则使用 RBO 方式。
优化器的选择
优化器的选择可以通过指定优化模式(CBO/RBO)或选择默认模式(Choose)来实现。在 Choose 模式下,如果表有统计信息,优化器将使用 CBO 方式;否则,使用 RBO 方式。
COST
COST 是 Oracle 内部用来比较各个执行计划所耗费(IO/CPU)的代价的值。不同的语句的 COST 值不具有可比性,只能对同一个语句的不同执行计划的 COST 值进行比较。
程序员的要求
ORACLE 系统中的优化器做的比较简单,因此这就要求用户要有较强的优化意识。程序员要想获得较优的查询性能,就必须对表的大小、索引的选择率以及更新和存取操作的频度等统计信息了如指掌。
优化原理
优化通常有两方面的内容,即逻辑优化和物理优化。逻辑优化包括选择运算尽早执行、投影与选择运算同时进行、公共子表达式预处理、谓词的简化处理、表达式的恒等变换等。逻辑优化往往是一种等价变换,它的优化会对查询带来绝对好处,这部分优化与用户无关,完全由优化器负责。物理优化则往往是对动态情况的一种权衡。
索引
索引是对数据库表中的特定信息进行排序的一种结构,提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。索引可以基于数据库表中的单列或多列创建索引。多列索引可以区分其中一列可能有相同值的行。
索引类型
索引类型包括唯一索引和主键索引。唯一索引是不允许其中任何两行具有相同索引值的索引。主键索引是在数据库中为表定义主键将自动创建的索引。