ORACLE调优之--内存结构调优(摘自文平书)

从AIX 角度,我们可以在下面三个角度衡量内存使用的合理性

1>减少页面交换操作
当操作系统需要更多内存页以支持其他应用运行时,操作系统将依据某种算法(LRU算法)把当前驻留在内存中的某些
数据页"Page Out",也就是把内存中的数据页从内存段转移到物理磁盘。显然,这种类型的操作会影响整个系统的运行性能。
对于数据库这种内存敏感类型的应用系统来说,这点尤为重要。因为数据库需要把数据放在内存中操作,这部分内存区域
称为“数据高速缓存”。

因此,一般在系统设计时,我们往往将数据库安装在一台服务器上,独占这台服务器的所有资源,避免页交换的产生。
在数据库配置时,也避免过度地将内存结构分配给数据库,人为造成操作系统空余内存的紧张。


2>SGA应宿主在物理内存中
分配SGA的目的就是为了快速地将数据存储在内存中,因为内存速率和硬盘速率相比,差别至少在4个数量级以上。如果
SGA对应的虚拟内存页被交换到换页空间(磁盘)上,那么SGA也就没有意义了。

我们可以通过 show sga命令查看系统全局区当前的分配情况:
SQL>show sga

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              75499088 bytes
Database Buffers          205520896 bytes
Redo Buffers                2973696 bytes

从上面的结果可以看出,本Oracle 实例SGA总体为 285212672bytes(285MB),其中,Oracle启动固定内存1218992bytes(1.2MB)
,可变内存75499088bytes(75M),数据缓存205520896bytes(205M),日志缓存2973696bytes(2.9MB)

   
    为用户连接准备充分的内存资源
    SGA将占据数据库服务器中庞大的内存资源。除此之外,我们还需要为在系统上运行的服务器进程(Server Process,也就是
PGA)以及其他任务留下足够的内存。
    Oracle启动后,其内存分配理论上依赖于应用的使用特征。如果由于内存的分配导致了I/O操作的减少,并因此优化了应用
的I/O性能,则我们认为内存使用恰当。

 

 

||||||||||||||||||

  程序全局区(PGA)是包含客户端连接服务器所派生的服务器进程的集合,每个服务器进程都拥有存放数据和控制信息的私有内存
区域。客户端进程和服务器端进程一一对应,由服务器端进程完成用户的请求,并将数据返回给客户端进程。

   例如,当一个用户连接数据库并调用SQL语句时,这条SQL语句对应的游标就将在PGA中创建一个运行时区域,注意,这个区域
是私有的,只针对调用SQL的这个用户进程。PGA就是所有服务器进程的逻辑集合。

 因此PGA和SGA有着质的不同。SGA用于在进程间共享信息,PGA则用于信息私有化。图15-17表示了SGA和PGA内存区域内容的不同。


SGA:数据缓存、共享池、大池、Java池...
PGA:堆栈空间、用户会话数据、游标状态...

PGA的大小直接影响了性能,尤其针对会导致排序的SQL查询。以下几种情况需要提供足够的PGA:

导致排序的操作如 ORDER BY、GROUP BY、 ROLLUP等操作
哈希连接
位图合并
位图创建
批量数据装载

 

在Oracle 10g/11g版本中,PGA的管理被自动化设置,成为自动的PGA内存管理。在该方式中,Oracle将动态调整PGA内存的大小为
SGA内存的20%,最小值是10MB。初始化参数PGA_AGGREGATE_TARGET显示了当前PGA的分配情况。
SQL> show parameters pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 90M
SQL>

 

 

在构建一个新的数据库实例时,PGA_AGGREGATE_TARGET 参数可以首先凭经验进行确定,例如,对应SGA大小20%。然后,
在系统载荷上升的情况下,使用Oracle PGA优化工具,调节 PGA_AGGREAGATE_TARGET参数。Oracle 提供了两个PGA建议
性能视图:V$PGA_TARGET_ADVICE和V$PGA_TARGET_ADVICE_HISTOGRAM。
例如下面的查询列出了在不同PGA设置时预计的命中率:

select round(pga_target_for_estimate/1024/1024) est_target_mb,estd_pga_cache_hit_percentage,estd_overalloc_count,pga_target_factor from v$pga_target_advice order by 1;

EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
           11                            97                    2
             .125

           23                            97                    2
              .25

           45                           100                    1
               .5


EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
           68                           100                    0
              .75

           90                           100                    0
                1

          108                           100                    0
              1.2


EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
          126                           100                    0
              1.4

          144                           100                    0
              1.6

          162                           100                    0
              1.8


EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
          180                           100                    0
                2

          270                           100                    0
                3

          360                           100                    0
                4


EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
          540                           100                    0
                6

          720                           100                    0
                8


14 rows selected.

SQL>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值