ORACLE 执行计划和SQL调优
内容安排
第一部分:背景知识
第二部分:SQL调优
第三部分:工具介绍
第一部分 背景知识
执行计划的相关概念
Rowid的概念
rowid是一个伪列,既然是伪列,那么这个列
就不是用户定义,而是系统自己给加上的。对
每个表都有一个rowid的伪列,但是表中并不
物理存储ROWID列的值。不过你可以像使用其
它列那样使用它,但是不能删除改列,也不能
对该列的值进行修改、插入。一旦一行数据插
入数据库,则rowid在该行的生命周期内是唯
一的,即即使该行产生行迁移,行的rowid也
不会改变。
Recursive SQL概念
有时为了执行用户发出的一个sql语句,Oracle必须执
行一些额外的语句,我们将这些额外的语句称之为
‘recursive calls’或‘recursive SQL statements’。如当一
个DDL语句发出后,ORACLE总是隐含的发出一些
recursive SQL语句,来修改数据字典信息,以便用户
可以成功的执行该DDL语句。当需要的数据字典信息
没有在共享内存中时,经常会发生Recursive calls,这
些Recursive calls会将数据字典信息从硬盘读入内存中
。用户不比关心这些recursive SQL语句的执行情况,
在需要的时候,ORACLE会自动的在内部执行这些语句
。当然DML语句也都可能引起recursive SQL。简单的
说,我们可以将触发器视为recursive SQL。