1、“数据库” 归属于数据文件 2、“实例”归属于内存结构,实例由系统的全局内存区域(SGA)以及一系列的后台集成组成
1、是Oracle用来缓存程序数据的地方,执行过的每一条sql语句在共享池中都会留下解析后的内容。存储这些语句的地方称为高速缓存。Oracle在解析每条sql之前,都会现在共享池中查询是否存在相同的语句,若存在则不再重新解析,直接使用,而且该sql是在所有需要使用的用户之间共享。
2、使用 最近最少使用算法(LRU) 进行管理
一、库高速缓存是共享池中用来保存之前已经解析过的语句的区域
1、软解析 Oracle判断该sql在以前已经执行过,将其从库高速缓存中取回来重用,称为软解析 2、硬解析 不存在库告诉缓存中,需要执行所有解析过程,并将其存入缓存中,称为硬解析
硬解析和软解析时间可能相差千倍,所以使用绑定变量而不是常量很重要,因为变量名不变还是可以共享,但是常量的话会导致硬解析。
1、锁存器
锁存器是Oracle为了读取高速缓存或其他没存结构中的信息时必须获取的一种锁。在读取高速缓存中的任何信息前,Oracle都会获得一个锁存器,其他的会话必须等待,直到释放。锁存器是使用轮询的方式获取,CPU会积极检查是否空闲,当前查询相当于被挂起,如果轮询次数达到最大值,则请求停止,CPU执行其他任务,会话排到后面去锁存器是串行的2、互斥锁 一个序列化组件,阻止多个线程同时访问一个共享结构,与锁存器相比,互斥锁的优点:
占内存少,且可快速获取和释放;可直接修改游标的互斥锁引用计数,避免为已经打开的游标获取库高速缓存锁。数据块 1、块是Oracle进行操作的最小单位 2、块中包含表数据行或索引条目,有的还有用来排序的临时数据。 3、Oracle必须读取块来获得sql语句需要的数据行 4、块大小的唯一限制因素取决于所用的操作系统
缓冲区亦使用LRC算法管理空间,亦使用锁存器
清空缓冲区 alter system flush buffer_cache;清空共享池 alter system flush shared_pool;set autotrace traceonly statistics; GUOCHEN@orcl> alter system flush buffer_cache; 系统已更改。 已用时间: 00: 00: 00.10 GUOCHEN@orcl> alter system flush shared_pool; 系统已更改。 已用时间: 00: 00: 00.45 GUOCHEN@orcl> set autotrace traceonly statistics; GUOCHEN@orcl> select * from products; 已选择7行。 已用时间: 00: 00: 00.15 统计信息 ---------------------------------------------------------- 310 recursive calls 0 db block gets 50 consistent gets 16 physical reads 0 redo size 915 bytes sent via SQL*Net to client 523 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 5 sorts (memory) 0 sorts (disk) 7 rows processed GUOCHEN@orcl> set autotrace off GUOCHEN@orcl> alter system flush buffer_cache; 系统已更改。 已用时间: 00: 00: 00.07 GUOCHEN@orcl> set autotrace traceonly statistics; GUOCHEN@orcl> select * from products; 已选择7行。 已用时间: 00: 00: 00.03 统计信息 ---------------------------------------------------------- 0 recursive calls 0 db block gets 8 consistent gets 6 physical reads 0 redo size 915 bytes sent via SQL*Net to client 523 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 7 rows processed GUOCHEN@orcl> select * from products; 已选择7行。 已用时间: 00: 00: 00.01 统计信息 ---------------------------------------------------------- 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size 915 bytes sent via SQL*Net to client 523 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 7 rows processed1、查询块 查询转换所能采用的方法取决于每个查询块的组成形式 2、转换方式
视图合并子查询解嵌套连结消除排序消除谓词推进使用物化视图重写查询