ORACLE内存结构研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE内存结构研究

学 号: 2012131302 2012131307 课 程 设 计 课程名 大型数据库(Oracle)与实训 Oracle数据库内存结构研究 学 院 计信学院 专 业 金融信息化 班 级 2班 学生姓名 魏泽平 刘维燊 指导教师 刘波 2015 年 1 月 1 日 ORACLE内存结构研究 Oracle的内存,从总体上讲,可以分为两大块:共享部分(主要是SGA,系统全局 SGA Share Pool Buffer Cache Redo Log Buffer Java Pool Stream Pool(10g) Large Pool PGA*n Bitmap merge area Sort Area Hash Area UGA*n CUA*n 2.手动PGA内存管理 如果采用手动PGA内存管理,有些参数对PGA大小的影响最大,这是指PGA中除了会话为PL/SQL表和其他变量分配的内存以外的部分,这些参数如下: SORT_AREA_SIZE:在信息换出到磁盘之前,用于对信息排序的RAM总量。 SORT_AREA_RETAINED_SIZE:排序完成后用于保存已排序数据的内存总量。也就是说,如果SORT_AREA_SIZE是512KB,SORT_AREA_RETAINED_SIZE是256 KB,那么服务器进程最初处理查询时会用512KB的内存对数据排序。等到排序完成时,排序区会“收缩”为256 KB,这256 KB内存中放不下的已排序数据会写出到临时表空间中。 HASH_AREA_SIZE:服务器进程在内存中存储散列表所用的内存量。散列联结时会使用这些散列表结构,通常把一个大集合与另一个集合联结时就会用到这些结构。两个集合中较小的一个会散列到内存中,散列区中放不下的部分都会通过联结键存储在临时表空间中。 Oracle将数据写至磁盘(或换出到磁盘)之前,数据排序或散列所用的空间量就由这些参数控制,这些参数还控制着排序完成后会保留多少内存段。SORT_AREA_SIZE~SORT_AREA_ RETAINED_SIZE这部分内存一般从PGA分配,SORT_AREA_RETAINED_SIZE这部分内存会在UGA中分配。通过查询一些特殊的Oracle V$视图,可以看到PGA和UGA内存的当前使用情况,并监视其大小的变化,这些特殊的V$视图也称为动态性能视图(dynamic performance view)。 例如,下面来运行一个小测试,这里会在一个会话中对大量数据排序,在第二个会话中,我们将监视第一个会话中UGA/PGA内存的使用。为了以一种可预测的方式完成这个工作,我们建立了ALL_OBJECTS表的一个副本,其中有大约45 000行,而且没有任何索引(这样就能知道肯定会发生排序): sqlplus /as sysdba create table T as select * from all_objects; table created. exec dbms_stats.gather_table_stats(user,T); PL/SQL procedure successfully completed 为了消除最初硬解析查询所带来的副作用,我们将运行以下脚本,不过现在先不管它的输出。后面还会在一个新会话中再次运行这个脚本,查看受控环境中对内存使用的影响。我们会依次使用大小为64 KB、1 MB和1 GB的排序区: create table T as select * from all_objects; table created. exec dbms_stats.gather_table_stats(user,T); alter session set workarea_size_policy=manual; alter session set sort_area_size=65536; set termout off select * from t order by 1,2,3,4; set termout on alter session set sort_area_size=1048576; set termout off select * from t order by 1,2,3,4; set termout on alter session sort_area_size=1073741820; set termout off select * from t order by 1,2,3,4; set termout on 为了消除最初硬解析查询所带来的副作用,我们将运行以下脚本,不过现在先不管它的输出。后面还会在一个新会话中再次运行这个脚本,查

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档