码迷,mamicode.com
首页 > 数据库 > 详细

Oracle体系结构

时间:2015-07-21 18:33:05      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

数据库 - 数据文件
实例 - 内存结构

一个实例由系统全局内存区域(SGA)以及一系列后台进程组成
每个连接到数据库的用户都通过一个客户端进程来进行管理。
客户端进程是与服务端进程相联结的,每个服务器进程都会被分配一块私有的内存区域,称为进程共享内存区域(PGA)


SGA - 共享池
共享池是缓存程序数据的地方。执行过的每一条SQL语句在共享池中都存有解析后的内容。
共享池中存储这些语句的地方称为库高速缓存。解析每一条语句之前,Oracle都会检查库高速缓存中是否已经存在同样的语句。
如果存在,Oracle直接从缓存中读取并使用该信息而不是将同样的语句再解析一遍。
这些缓存被所有用户所共享

Oracle所使用的系统参数也存放在共享池中,称为数据字典高速缓存区域

Oracle还会存储所有的数据库对象信息

最少使用算法:LRU 原先已经加载的语句不能长时间存放其中,保留那些最频繁以及最近使用的语句


库高速缓存
每条SQL执行前都需要解析并放入高速缓存中
解析包括:语法验证、检验提及的对象、确认用户权限。然后再查看这个语句是否执行过。如果执行过,就重用(软解析)
否则为当前语句生成查询计划(硬解析)。当然,硬解析完后会将结果保存在高速缓存中

查看当前库高速缓存的语句:v$sql

在SQL语句中,尽量使用绑定变量。这样的话,即使变量发生变化,Oracle认为是同一条语句,不需要重新解析

锁存器:保护库高速缓存避免被两个同时进行的会话修改

SGA - 缓冲区缓存
缓冲区缓存是系统全局区(SGA)最大的部分之一。
数据从硬盘读取出来后,或者写入硬盘前,它用来存储数据块。块,是Oracle执行操作的最小单位。
块中包含有表数据行或索引条目。一些块还会包含排序的临时数据。块大小的唯一限制因素取决于操作系统

查询转换
查询转换能够并且可能会重写查询,所以Oracle最终执行的SQL不一定就是我们所写的SQL

视图合并

子查询解嵌套

谓语前推

Oracle体系结构

标签:

原文地址:http://www.cnblogs.com/sherrykid/p/4665270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!