ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PGA空间分配(转载)

PGA空间分配(转载)

原创 Linux操作系统 作者:alert.an 时间:2009-10-14 22:35:44 0 删除 编辑

转载自:http://www.dbform.com/html/2009/776.html

1. 在设置了PGA_AGGREGATE_TARGET初始化参数的数据库中,表示使用PGA自动管理,所有其它的*_AREA_SIZE参数都将被忽略。PGA_AGGREGATE_TARGET参数值的范围是:10MB 到 4096GB–1个字节之间。

2. Oracle数据库会按照每个session的需要为其分配PGA,同时会尽量维持整个PGA的内存总和不超过PGA_AGGREGATE_TARGET参数所定义的值。

3. 在PGA中对于性能影响最大的是SQL Work Area(SQL工作区)
Oracle将所分配的SQL工作区大小分成三种类型:
Optimal:SQL语句能够完全在所分配的SQL工作区内完成所有的操作。这时性能最佳。
Onepass:SQL语句需要与磁盘上的临时表空间交互一次才能够在所分配的SQL工作区中完成所有的操作。
Multipass:由于SQL工作区过小,从而导致SQL语句需要与磁盘上的临时表空间交互多次才能完成所有的操作。这时性能将急剧下降。

SQL> SELECT swh.MULTIPASSES_EXECUTIONS,swh.LOW_OPTIMAL_SIZE,swh.HIGH_OPTIMAL_SIZE
2 FROM v$sql_workarea_histogram swh
3 WHERE swh.MULTIPASSES_EXECUTIONS>0
4 ORDER BY 1 DESC;

通过以上SQL可以知道所有被分配了Multipass尺寸的会话需要多大的内存才能够成为Optimal操作。

4. 单个会话使用PGA的期望尺寸(也可以认为是实际分配的最大尺寸)计算公式是: min(5%*pga_aggregate_target,50%*_pga_max_size,_smm_max_size)

5. 每次修改pga_aggregate_target值,Oracle都会自动重新计算_smm_max_size值。
如果_pga_max_size > 5%*pga_aggregate_target,则_smm_max_size为5%*pga_aggregate_target。
如果_pga_max_size <= 5%*pga_aggregate_target,则_smm_max_size为50%*_pga_max_size。

实际上最终决定会话PGA使用量的隐含参数是_smm_max_size。
我们通过在会话级别修改_pga_max_size或者_smm_max_size,可以达到微调单个会话PGA使用效率的目的。

注:_smm_max_size单位是K。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/123747/viewspace-616577/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-08-08

  • 博文量
    11
  • 访问量
    13664