Oracle 内存结构 :SGA PGA_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1271 | 回复: 0   主题: Oracle 内存结构 :SGA PGA        下一篇 
DJYang
注册用户
等级:列兵
经验:91
发帖:67
精华:0
注册:2011-8-8
状态:离线
发送短消息息给DJYang 加好友    发送短消息息给DJYang 发消息
发表于: IP:您无权察看 2015-6-29 15:37:52 | [全部帖] [楼主帖] 楼主

系统全局区(SGA:system global area)

多个用户同时连接数据库时,所有的用户进程、服务进程都可以共享使用SGA区。是不同用户进程与服务进程进行通信的中心。数据库的所有操作主要都在SGA区中进行。当数据库实例启动时,系统全局区内存被自动分配。SGA按作用的不同,又分为:数据缓冲区、日志缓冲区、共享池。

数据缓冲区


数据缓冲区用于存储从磁盘数据文件中读入的数据,供所有用户共享。修改、插入的数据存储在数据缓冲区中,修改完成或DBWR进程执行时,数据被写入数据文件。对于缓冲区中已经被修改但尚未写入文件的数据,我们称之为“脏数据”。Oracle采用LRU(最近最少用)算法来管理数据缓冲区中的数据。

缓冲区的设置对性能影响是很突出的。设一个查询要读取的数据块数为A,能够从缓冲区读取到的数据块数为C,需要从磁盘读取的数据块数为D,那么A+C+D称为物理读,则C/A称为数据缓冲区的命中率

日志缓冲区


日志缓冲区用于缓冲事务日志,在适当的时候再由LGWR进程写入日志文件。当执行insert,update,delete等语句对表进行修改,或执行create,alter,drop等语句修改方案对象时,oracle会为这些操作生产重做记录,日志缓冲区就缓存这些重做记录的。

共享池


共享池保存了最近执行的sql语句、PL/SQL程序和数据字典信息,是对sql语句和PL/SQLd程序进行语法分析、编译、执行的内存区。包括:库缓冲区(library cache),数据字典缓冲区(data dictinary cache)两个部分。

大池


     大池用于为需要大内存的操作提供相对独立的内存空间,以便提高这些操作的性能。大池是一个可选的内存结构。

JAVA池


     用于存放java代码、java语句的语法分析表、java语句的执行方案和进行java程序开发。

程序全局区(PGA:program global area)

     PGA区是在用户进程链接到数据库,并创建一个对应的会话时,由oracle为服务进程分配的,专门为当前用户会话的内存区。这个内存区是非共享的,只有服务进程本身才能访问它自己的PGA。PAG区的大小由操作系统决定,分配之后不可以更改,会话终止时,oracle会自动释放PGA所占的内存区。包括:

1.        排序区

存放排序操作所产生的临时数据

2.        会话区

保存会话所具有的权限、角色、性能统计信息

3.        游标区

当使用游标时,oracle会在共享池中为该语句分配上下文区。游标区在打开游标时创建,关闭游标时释放,所有尽量避免反复打开、关闭游标

4.        堆栈区

保存会话中的绑定变量、会话变量以及sql语句运行时的内存结构。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论