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 ...
随机推荐
- 【转】Struts1.x系列教程(5):HTML标签库
转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...
- 一. HTML认识
1.1认识什么是纯文本文件txt window自带有一个软件,叫做记事本,记事本保存的格式就是TXT,就是英文text的缩写,术语上称呼为"纯文本文件. TXT文件,只能保存文本内容,是无法 ...
- LA 3713 宇航员分组
题目链接:http://vjudge.net/contest/142615#problem/B 题意:有A,B,C三个人物要分配个N个宇航员,每个宇航员恰好要分配一个任务,设平均年龄为X,只有年龄大于 ...
- windows 中 使用MongoDB
MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式. 传统的关系数据库一般由 ...
- 断言(ASSERT)的用法
我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”. 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解 ...
- CSS3之尖角标签
如图所示,Tag标签的制作通常使用背景图片,现在用CSS3代码就能实现尖角效果(需浏览器支持CSS3属性). 运用CSS3样式实现尖角标签,只需要写简单的HTML结构和CSS样式. <p> ...
- Filestream(读写)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- 转:已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。
答案: int max(int a,int b){return (a+b+abs(a-b))/2;} 类似的 请定义一个宏,比较两个数a.b的大小,不能使用大于.小于.if语句 答案: #define ...
- git diff patch
如何生成patch:修改一个地方,然后git diff > xxx.patch 就会生成一个patch文件,这里的关键似乎是, 源文件的某个模块的版本要和线上发布的最新版本要一致,这样patch ...
- django"动态网页","动态url","调试方法"
一.动态网页 其实只是每次刷新时,获取最新时间而已 1.urls.py from django.conf.urls import patterns, url, include urlpatterns ...