Oracle的内存结构

备注:本图片截图自“炼数成金”
Oracle的体系结构分为内存结构、进程,磁盘文件。
内存结构分为SGA, PGA。SGA是系统全局区,是所有的用户共享区,PGA是某个用户的私有区。
SGA分为share pool, data buffer, log buffer.
share pool又分为library cache和Data Directory cache, 主要为优化器使用。当以sql语句提交后,会进行语法分析,语法分析通过,进行语义分析,在语义分析中,会进行sql语句的删除和整理, 比如select count(*) from A order by $1, 在语义分析中会将后面order by $1去除。 在语义分析中,优化器会根据share pool的信息基于开销选择一种执行计划,进行执行,同时把执行计划的hash值放入share pool中,第二次执行的时候, 会查询share pool中是否有该执行计划,有该执行计划,就不用重新生成执行计划(硬解析, 大概在一次小数据的查询中,80%的耗时会在硬解析中),而用存放的执行计划。
data buffer是数据的缓冲区,分为default和keep, 其中DBWR进程负责data buffer的填充数据,删除数据,以及由CKPT触发时向磁盘写入数据。当执行一个sql语句后,会留在回滚段中,还可以rollback, 如果再执行commit操作,则将操作确定,但是这时不一定会立即将数据写入磁盘中,而是在log buffer中写入操作日志,将log buffer中的数据写入log文件中,来达到安全保障. 顺便说一句,写日志文件是append操作,而写data文件很多是随机读写,所以写log文件的速度比写data文件快. 当读数据的时候, 首先查看data buffer中是否有目标数据,如果没有,则从磁盘中读入目标数据块.
log buffer是日志的缓冲区,当log buffer达到一定阀值时或者commit时,会像日志文件中写入日志数据。当日志文件1写满,就写2,依次下去,如果4写满,会重新写1,这时,如果归档模式打开,就会先向存储介质中归档1中的数据,如果归档模式没有打开,直接覆盖1. 值得注意的是,在几个日志文件进行切换或者归档的的时候,因为操作是按照先写入日志再进行读写操作的方式进行操作,log buffer不能向日志文件中写入数据,所以,操作不能继续进行,系统处于暂停状态。因此,为了避免log文件的频繁切换,我们适度增大文件的大小和个数,一般每个文件的大小设置为2G,log文件的个数为8.
PGA, 用户的排序等操作是在PGA中进行的。 可以根据物理服务器的大小, 通过设置SGA, PGA的参数来进行调优。
Oracle的内存结构的更多相关文章
- Oracle之内存结构(SGA、PGA)
一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. ...
- oracle 初探内存结构
数据库的存储机构 分为 逻辑存储结构 和 物理存储结构 逻辑存储结构: 数据库.表空间.段.区.块 物理存储结构: 数据库.控制文件.数据文件.初始化参数文件.OS块等. 一个区只能在 ...
- [转载] Oracle之内存结构(SGA、PGA)
2011-05-10 14:57:53 分类: Linux 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area ...
- 【转载】Oracle之内存结构(SGA、PGA)
[转自]http://blog.itpub.net/25264937/viewspace-694917/ 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: ...
- oracle整体结构-内存结构、物理结构、逻辑结构、进程
Oracle的体系结构大体上分为两部分:Instance(实例)和Database(数据库). Instance(实例) :在Oracle Instance中主要包含了SGA以及一些进程(例如:PMO ...
- [转]oracle学习入门系列之五内存结构、数据库结构、进程
原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...
- Oracle体系结构之内存结构(3)
Oracle内存结构由系统全局区SGA和程序全局区PGA组成. SGA是实例启动的时候分配的Oracle实例中的一个基本成分. PGA是服务器进程启动时分配. 1.系统全局区SGA 系统全局区SGA由 ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- Oracle内存结构:SGA PGA UGA
内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内存结构: 一. 系统全局区 (System G ...
随机推荐
- java 将list 按长度分割
public static <T> List<List<T>> splitList(List<T> list, int pageSize) { ...
- 至强CPU性能排行,从X3210起,由低至高排列。
X3210X3220E5410E5506X5355X3320E5507X5365E5-2603E3-1220LE5-2403E5607X3330L5506X3230L5420E5-2407W3520E ...
- winform 传值,构造函数等
窗体转换 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form1 f ...
- [问题2014A08] 解答
[问题2014A08] 解答 由假设知 \(f(A)=\mathrm{tr}(AA')\), 因此 \[f(PAP^{-1})=\mathrm{tr}(PAP^{-1}(P')^{-1}A'P')=\ ...
- Bootstrap_按钮工具栏
单个按钮在Web页面中的运用有时候并不能满足我们的业务需求,常常会看到将多个按钮组合在一起使用,比如富文本编辑器里的一组小图标按钮等. Bootstrap框架为大家提供了按钮组组件. <div ...
- PHP基础知识之————php5-cli 的安装以及phpredis的安装
在系统安装完后最好执行下列命令更新下软件 sudo apt-get update 安装php5-cli apt-get install php5-cli 下载phpredis wget https:/ ...
- js string to int
一.js中string转int有两种方式 Number() 和 parseInt() <script> var str='1250' ; alert( Number(str) ...
- Android studio环境搭建
首先要下载jdk,下载好以后配置环境变量,这里略过,不会的可以百度搜索,这里附上jdk下载地址:http://pan.baidu.com/s/1Xrmqy 下载Android studio 软件,下载 ...
- 关于 RxJava 技术介绍
Awesome-RxJava RxJava resources Blog 给 Android 开发者的 RxJava 详解 -强烈推荐 扔物线的文章 讲解非常详细 NotRxJava懒人专用指南 -这 ...
- charles抓包的使用教程
// Charles 从入门到精通:(http://blog.csdn.net/donwei8/article/details/51647752) //抓包工具:Charles-断点修改 教程 (ht ...