WEB开发网
开发学院数据库Oracle Oracle内存结构研究-PGA篇 阅读

Oracle内存结构研究-PGA篇

 2009-07-06 11:50:06 来源:WEB开发网   
核心提示: 1) PGA_AGGREGATE_TARGET是一个目标值,连接数少的时候实际分配PGA内存会比它要小,Oracle内存结构研究-PGA篇(3),连接数多的时候实际分配的PGA内存会比它要大,但是Oracle会努力保持总PGA保持在PGA_AGGREGATE_TARGET值内,每个用

1)        PGA_AGGREGATE_TARGET是一个目标值。连接数少的时候实际分配PGA内存会比它要小。连接数多的时候实际分配的PGA内存会比它要大,但是Oracle会努力保持总PGA保持在PGA_AGGREGATE_TARGET值内。

例如,PGA_AGGREGATE_TARGET 设为300MB。5个用户连接时,每个用户可能分配10MB的PGA内存,共分配50MB的PGA内存。300个用户连接时每个用户可能分配1.3MB的PGA内存,共分配390MB的PGA内存。当用户连接多时,Oracle会降低每个用户的PGA内存使用量。

2)        一个串行查询(非并行查询)可能包括多个排序/散列操作,每个排序/散列操作最多使用5%的PGA内存。

3)        一个并行查询最多可用到30%的PGA内存,无论有多少并行进程。

五、手动PGA内存管理与自动PGA内存管理

自动PGA内存管理相对于手动PGA内存管理有很多优点

1,        当用户连接少时

a)        手动PGA内存管理不管有多少可用内存都按照预设值进行分配。比如当前空闲内存为300MB,连接需要10MB的内存进行排序,而我们设定的排序区大小为5MB,导致虽然有足够的空闲内存却无法分配给当前连接,造成执行效率低下。

b)        自动PGA内存管理会根据当前空闲内存来进行分配。当空闲内存为300MB,当前用户需要10MB内存进行排序,Oracle就会分配10MB内存给当前用户。

2,        当用户连接多时

a)        手动PGA内存管理会完全按照预设值分配内存。如果物理内存总量为1G,排序区设为5MB,当有300个用户连接时,Oracle会分配1.5G的内存,这已经超过了我们的实际物理内存!

b)        自动PGA内存管理会根据当前连接情况进行分配。如果物理内存总量为1G,PGA_AGGREGATE_TARGET为300MB,当用户数从10升到300时,每个用户连接的内存会从满足需要的10MB慢慢减少到1.3MB,虽然最后总量也会超过PGA_AGGREGATE_TARGET,但比起手动PGA内存管理要好很多了。

上一页  1 2 3 4 5  下一页

Tags:Oracle 内存 结构

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接