a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 131|回复: 1

[其他] Oracle认证:Oracle内存结构研究

[复制链接]
发表于 2012-8-4 13:56:03 | 显示全部楼层 |阅读模式
SGA,PGA,UGA都是Oracle打点的内存区。 ' ^" c; T& ?" x' e* L7 A( R2 |" Q+ e
SGA(System Global Area),即系统全局区,Oracle中最主要的内存区。   a; Y& K* X  M: M1 M& L
PGA(Process Global Area),即轨范全局区,一个历程的专用的内存区。
  r1 `* U5 n8 `% \: ~7 e0 \2 h, i7 [UGA(User Global Area),即用户全局区,与特定的会话相联系关系。
# G# M/ Y, S& r" R: i+ @8 t* ?( P专用处事器毗连模式,UGA在PGA平分配。
# K  a: ?( c/ Q, X% R; W7 p共享处事器毗连模式,UGA在SGA中的Large Pool平分配。 8 R# I. t) q/ ~0 t" p. V4 V/ Y
如不美观采用专用处事器毗连模式,PGA中包含UGA,其他区域用来排序,散列和位图合并。
2 n0 D2 Q/ v6 u$ c4 G7 D7 ~3 B简单来讲,PGA=UGA+排序区+散列区+位图合并区。 1 y2 @! d: ?8 H2 H- j
PGA分两种打点模式: 2 S, y( K" h+ S, ^
1) 手动PGA内存打点,用户指定排序区和散列区所使用的内存,每个毗牵连用不异的内存。 & B4 U5 z( V1 b5 J* w
2) 自动PGA内存打点,告诉Oracle可以使用的PGA的总量,由Oraclce按照系统负载抉择具体分配。
# w, Y4 c/ \$ b9iR1时默认为手动PGA内存打点,9iR2往后默认为自动PGA内存打点。
+ R# d6 y  Z) J4 w' f, Y7 aPGA内存可以动态扩大和收受接管。 - W7 w9 w! O& |& Q
PGA内存打点模式由WORKAREA_SIZE_POLICY节制。
8 F3 T5 [7 z, [. ^6 G' M9 a9 M1) 设为MANUAL,启用手动内存打点。 ( h: ]$ H% s) G5 |
2) 设为AUTO,而且PGA_AGGREGATE_TARGET不为0时,启用自动内存打点。
. n" U" V5 l! i有三个参数对PGA影响最大。 8 c, q$ l9 z3 {- p
SORT_AREA_SIZE:对信息排序所用的内存总量
9 W/ T" |2 H- V2 `( W, Z; wSORT_AREA_RETAINED_SIZE:排序后在内存中保留排序信息的内存总量。 1 t# {) |" D: Q% P1 v) P
HASH_AREA_SIZE:存储散列列表所用的内存量。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:56:04 | 显示全部楼层

Oracle认证:Oracle内存结构研究

下面临这三个参数进行声名: 8 A4 ]9 g- Y1 \: L1 r7 \, T
1) SORT_AREA_SIZE:
3 S- T) I; W6 ]) D9 P) }6 _* U如不美观SORT_AREA_SIZE设为512KB,SORT_AREA_RETAINED_SIZE也为512KB,则Oracle使用512KB的内存进行排序,排序后所稀有据都留在内存中。
' k) G* H9 K) T7 |. v2) SORT_AREA_RETAINED_SIZE:
# F/ U" ]: r% u如不美观SORT_AREA_SIZE设为512KB,SORT_AREA_RETAINED_SIZE设为384KB,则Oracle使用512KB的内存进行排序,然后保留384KB的已排序数据,此外512KB-384KB=128KB的已排序数据会写到姑且表空间中。
: l/ p: c' k5 J& M, D$ z! w7 ~; F如不美观SORT_AREA_RETAINED_SIZE没有设置,则它的值为0,可是现实保留的排序数据和SORT_AREA_SIZE不异。 " g3 W& w5 a- y+ ?
3) HASH_AREA_SIZE: : r) t" z/ m6 B( C. z/ s: E: n
一个大集结和另个集结进行毗连时,会用到HASH_AREA_SIZE参数。较小的 表会放到这部门内存中作为驱动表,然后大表进行试探(PROBE)操作进行毗连。如不美观HASH_AREA_SIZE过小会影响两个集结(表)毗连时的机能。 - L4 M4 `$ A2 T
注重点:
- U. Q) O% \3 f$ h& m4 V4 M3 f, _1) 如不美观需要排序的数据量大于SORT_AREA_SIZE,Oracle会分批进行排序。把当前已排序的数据保留到姑且表空间中,然后对残剩的数据进行排序。最后,还会对这些保留在姑且表空间中的已排序数据再进行排序,因窝殴畚保留到姑且表空间中的已排序数据只是部门数据的排序,对折体需排序的数据来说只是部门局部有序。 8 s2 c$ Y( U8 e; v( m
2) *_AREA_SIZE只是对某个操作的限制,一个发芽可能有多个操作,每个操作都有自己的内存区。如不美观SORT_AREA_SIZE设为5MB,一个发芽可能会有10个排序操作,这样一个发芽会占用50MB的排序内存。 0 _) ?9 @7 T! \' f( t
3) 3,*_AREA_SIZE内存的分配是按需分配。如不美观一个发芽需要5MB内存进行排序,就算分配1G的SORT_AREA_SIZE也不会全数使用,只会使用需要的5MB的内存量。
/ r: v: ^. W# x9 Y要启用自动PGA内存打点,设置下列参数: ; [( d" J+ D/ K" Q. r) Q
1,WORKAREA_SIZE_POLICY=AUTO
) m& G, l: I  }$ [9 J1 s2,PGA_AGGREGATE_TARGET=非零
( r4 T1 x6 R' @; F, g有关PGA_AGGREGATE_TARGET:
2 Z8 f6 ]6 T" j# T1) PGA_AGGREGATE_TARGET是一个方针值。毗连数少的时辰现实分配PGA内存会比它要小。毗连数多的时辰现实分配的PGA内存会比它要大,可是Oracle会全力连结总PGA连结在PGA_AGGREGATE_TARGET值内。
3 v7 J0 T" a3 r" |2 g0 [( t9 H6 A例如,PGA_AGGREGATE_TARGET 设为300MB。5个用户毗连时,每个用户可能分配10MB的PGA内存,共分配50MB的PGA内存。300个用户毗连时每个用户可能分配1.3MB的 PGA内存,共分配390MB的PGA内存。当用户毗连多时,Oracle会降低每个用户的PGA内存使用量。 6 O; L6 Y3 F  W- p8 c% g: k1 r
2) 一个串行发芽(非并行发芽)可能搜罗多个排序/散列操作,每个排序/散列操作最多使用5%的PGA内存。
& v( s0 l: B4 T& K% g8 r) S. D; ^3) 一个并行发芽最多可用到30%的PGA内存,无论有若干好多并行历程。 自动PGA内存打点相对于手动PGA内存打点有良多利益
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-30 02:00 , Processed in 0.279344 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表