从AIX 角度,我们可以在下面三个角度衡量内存使用的合理性 1>减少页面交换操作 因此,一般在系统设计时,我们往往将数据库安装在一台服务器上,独占这台服务器的所有资源,避免页交换的产生。
我们可以通过 show sga命令查看系统全局区当前的分配情况: Total System Global Area 285212672 bytes 从上面的结果可以看出,本Oracle 实例SGA总体为 285212672bytes(285MB),其中,Oracle启动固定内存1218992bytes(1.2MB) |||||||||||||||||| 程序全局区(PGA)是包含客户端连接服务器所派生的服务器进程的集合,每个服务器进程都拥有存放数据和控制信息的私有内存 例如,当一个用户连接数据库并调用SQL语句时,这条SQL语句对应的游标就将在PGA中创建一个运行时区域,注意,这个区域 因此PGA和SGA有着质的不同。SGA用于在进程间共享信息,PGA则用于信息私有化。图15-17表示了SGA和PGA内存区域内容的不同。
PGA的大小直接影响了性能,尤其针对会导致排序的SQL查询。以下几种情况需要提供足够的PGA: 导致排序的操作如 ORDER BY、GROUP BY、 ROLLUP等操作 在Oracle 10g/11g版本中,PGA的管理被自动化设置,成为自动的PGA内存管理。在该方式中,Oracle将动态调整PGA内存的大小为 NAME TYPE VALUE 在构建一个新的数据库实例时,PGA_AGGREGATE_TARGET 参数可以首先凭经验进行确定,例如,对应SGA大小20%。然后, 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 23 97 2 45 100 1
90 100 0 108 100 0
144 100 0 162 100 0
270 100 0 360 100 0
720 100 0
SQL> |