- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1
第 4 章 内存结构
这一章将讨论Oracle的3个主要的内存结构:
q 系统全局区(System Global Area,SGA) :这是一个很大的共享内存段,几乎所有Oracle进程都要访问这个区中的某一点。
q 进程全局区(Process Global Area,PGA) :这是一个进程或线程专用的内存,其他进程/线程不能访问。
q 用户全局区(User Global Area,UGA) :这个内存区与特定的会话相关联。它可能在SGA中分配,也可能在PGA中分配,这取
决于是用共享服务器还是用专用服务器来连接数据库。如果使用共享服务器,UGA 就在 SGA 中分配;如果使用专用服务器,
UGA就会在PGA(即进程内存区)中。
注意 在Oracle的较早版本中,共享服务器称为多线程服务器(Multi-Threaded Server)或MTS。这本书中我们会一直用“共享服务器”的
说法。
下面首先讨论PGA和UGA,然后再来介绍SGA,SGA确实是一个很庞大的结构。
4.1 进程全局区和用户全局区
进程全局区(PGA)是特定于进程的一段内存。换句话说,这是一个操作系统进程或线程专用的内存,不允许系统中的其他进程或
线程访问。PGA 一般通过 C 语言的运行时调用 malloc()或 memmap()来分配,而且可以在运行时动态扩大(甚至可以收缩)。PGA 绝对不
会在Oracle的SGA中分配,而总是由进程或线程在本地分配。
实际上,对你来说,用户全局区(UGA)就是你的会话的状态。你的会话总能访问这部分内存。UGA的位置完全取决于你如何连接
Oracle。如果通过一个共享服务器连接,UGA肯定存储在每个共享服务器进程都能访问的一个内存结构中,也就是SGA中。如果是这样,
你的会话可以使用任何共享服务器,因为任何一个共享服务器都能读写你的会话的数据。另一方面,如果使用一个专用服务器连接,则不
再需要大家都能访问你的会话状态,UGA几乎成了PGA的同义词;实际上,UGA就包含在专用服务器的PGA中。查看系统统计信息时
可以看到,采用专用服务器模式时,总是会报告UGA在PGA中(PGA大于或等于所用的UGA内存;而且PGA内存的大小会包括UGA
的大小)。
所以,PGA 包含进程内存,还可能包含 UGA。PGA 内存中的其他区通常用于完成内存中的排序、位图合并以及散列。可以肯定地
说,除了UGA内存,这些区在PGA中的比重最大。
从Oracle9i Release 1起,有两种办法来管理PGA中的这些非UGA内存:
q 手动 PGA 内存管理,采用这种方法时,你要告诉 Oracle:如果一个特定进程中需要排序或散列,允许使用多少内存来完成这些
排序或散列。
q 自动PGA内存管理,这要求你告诉Oracle:在系统范围内可以使用多少内存。
分配和使用内存的方式因情况不同而有很大的差异,因此,我们将分别进行讨论。需要说明,在 Oracle9i 中,如果采用共享服务器
连接,就只能使用手动PGA内存管理。这个限制到Oracle 10g Release 1(及以上版本)中就没有了。在Oracle 10g Release 1中,对于共享
服务器连接,既可以使用手动PGA内存管理,也可以使用自动PGA内存管理。
PGA内存管理受数据库初始化参数WORKAREA_SIZE_POLICY的控制,而且可以在会话级修改。在Oracle9i Release 2及以上版本
中,这个初始化参数默认为AUTO,表示自动PGA内存管理。而在Oracle9i Release 1中,这个参数的默认设置为MANUAL。
下面几节将分别讨论这两种方法。
4.1.1 手动 PGA内存管理
如果采用手动PGA内存管理,有些参数对PGA大小的影响最大,这是指PGA中除了会话为PL/SQL表和其他变量分配的内存以外
的部分,这些参数如下:
q SORT_AREA_SIZE:在信息换出到磁盘之前,用于对信息排序的RAM总量。 2
q SORT_AREA_RETAINED_SIZE:排序完成后用于保存已排序数据的内存总量。也就是说,如果SORT_AREA_SIZE是 512 KB,
SORT_AREA_RETAINED_SIZE是256 KB,那么服务器进程最初处理查询时会用512 KB的内存对数据排序。等到排序完成时,
排序区会“收缩”为256 KB,这256 KB内存中放不下的已排序数据会写出到临时表空间中。
q HASH_AREA_SIZE:服务器进程在内存中存储散列表所用的内存量。散列联结时会使用这些散列表结构,通常把一个大集合与
另一个集
您可能关注的文档
- n06机凝泵由b泵变频运行切换为a泵变频运行.doc
- n_p_k肥对香根草修复土壤镉_锌污染效率的影响.doc
- mysql 资料库系统第 1 章 mysql 资料库简介.ppt
- mysql 资料库系统第 3 章 资料库与资料表的建立.ppt
- mysql 资料库系统第 2 章 mysql 安装.ppt
- nace tm 0284-2003 管线管和压力容器用钢抗氢致开裂试验-hic.doc
- nd∶yag激光兔心腔内和颈外动脉内照射对血液学指标的影响.doc
- nd_yag透明激光陶瓷的研究进展及相关问题.doc
- nanofocus μscan(激光扫描轮廓仪).doc
- ndyag连续激光治疗31例口腔颌面深部海绵状血管畸形.doc
原创力文档


文档评论(0)