Oracle每个会话使用的pga,Oracle-OCP学习笔记:PGA | 码农网

f581966b34a069684e60fe43633a8294.png

实际工作中,Oracle中有两个很重要:ServerProcess 和 PGA。

SGA:Shared Global area

PGA 内存作用和构成 (Private Global Area)

一个server process占用一个PGA(内存空间)独占。

1.PGA 作用

PGA 存储与server process相关的一些会话,被单个serverprocess独占

2 、PGA构成

1 )private SQL area

2 )Session Memory

(hold a session’s variables (logon information) and otherinformation related to the session.)

3 )SQL Work Areas:   sql工作区(重点研究对象), server process 执行sql语句时,需要这个一样由PGA提供的工作空间。

Sql 工作区的组成部分:

WORKAREA_SIZE_POLICY

sort_area_size    # 排序区域

sort_area_retained_size # 释放空间的大小,也就是最低保留的空间大小

hash_area_size    #hash 连接时用的空间

hash_join_enable  #

bitmap_merge_area_size # 位图空间

create_bitmap_area_size

open_cursors   # 一个会话可以同时执行SQL语句的数量,一般配置200M

_pga_max_size   # 每个会话可以分配PGA空间最大的容量

查看为每个ServerProcess分配空间的最大值:

select ksppinm "Name", ksppstvl/1024/1024 ||'M'"Value", ksppdesc "Desc" from x$ksppi x, x$ksppcv y  where x.indx = y.indx and ksppinm='_pga_max_size';

查看各区的大小:

SYS AS SYSDBA@ORCL>show parameter area;

NAME                   TYPE       VALUE

------------------------------------ --------------------------------------------------

bitmap_merge_area_size           integer        1048576

create_bitmap_area_size      integer        8388608

hash_area_size                integer        131072

sort_area_retained_size      integer        0

sort_area_size                integer        65536

workarea_size_policy          string         AUTO

PGA 分配空间的方式:

手工分配:手动指定sort,hash,bitmap空间的大小,这个空间指为每个server process分配的空间。

如果sort_area_size分配小了,PGA中的排序就会利用磁盘进行排序,这个sql执行效率就会很低。

Server process 执行的sql语句如果在磁盘中排序分三种情况:

1. 完全内存排序

2. 使用磁盘排序,但只使用一次

3. 使用磁盘排序,并使用多次,速度会变得非常慢

自动分配:

自动分配时,PGA获取的空间是有限制的。

分配PGA空间大小参考:

PGA_AGGREGATE_TARGET

在OLTP系统中,典型PGA内存设置应该是总内存的较小部分(例如20%),剩下80%分配给SGA。

OLTP :PGA_AGGREGATE_TARGET= (total_mem * 80%) * 20%

在DSS系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70%的内存。

DSS :PGA_AGGREGATE_TARGET= (total_mem * 80%) * 50%

3 、PGA管理方式

Dedicated Server 、Shared Server

Dedicated Server: 连接和server process是一一对应的关系,适用于一般使用,对 数据库 的连接数量有限制,每个连接的负载比较大。

Shared Server: 通过调度进程来分配server process进程,来执行语句,适用于对数据库的连接数量非常大,但每个连接的负载比较小的情况。

目前大都是用Dedicated Server.

如果是大型电商网站,访问很多,单个负载很小的话,就用Shared Server。

5 、重要参数

6 、重要视图

V$PGASTAT

SELECT * FROM V$PGASTAT;

查看PGA需要分配多大空间才合适:

方法一:

V$PGA_TARGET_ADVICE :

Select pga_target_for_estimate/1024/1024 ||'M'"Estimate PGA Target",estd_pga_cache_hit_percentage "CacheHit(%)",estd_extra_bytes_rw/1024/1024 ||'M' "ExtraRead/Write",estd_overalloc_count "Over alloc count" Fromv$pga_target_advice

select(p.PGA_TARGET_FOR_ESTIMATE)/1024/1024,p.ESTD_PGA_CACHE_HIT_PERCENTAGE fromv$pga_target_advice p where p.ESTD_PGA_CACHE_HIT_PERCENTAGE>95;

SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024)target_mb, ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,  ESTD_OVERALLOC_COUNT FROMv$pga_target_advice;

方法二:

查看为每个ServerProcess分配空间的最大值:

select ksppinm "Name", ksppstvl/1024/1024 ||'M'"Value", ksppdesc "Desc" from x$ksppi x, x$ksppcv y  where x.indx = y.indx and ksppinm='_pga_max_size';

通过系统状态值,查看是否有磁盘排序的情况发生:

V$SYSSTAT 、V$SESSTAT

select * from V$SYSSTAT where name like '%sort%';

查看当前会话使用的情况:

select name,value from v$statname a,v$mystat b wherea.statistic#=b.statistic# and a.name like '%pga%';

V$SQL_WORKAREA

V$SQL_WORKAREA_ACTIVE

查看数据库总的连接数:

V$PROCESS

selectspid,program,pga_max_mem,pga_alloc_mem,pga_used_mem,pga_freeable_mem fromv$process where PROGRAM like '%ORCL%'

-- 查看PGA各个区域使用情况

selectp.PROGRAM,p.SPID,pm.CATEGORY,pm.ALLOCATED,pm.USED,pm.MAX_ALLOCATED fromv$process p,v$process_memory pm where p.PID=pm.PID and p.SPID in (select spidfrom v$process where addr in

(select paddr from v$sessionwhere sid in

(select distinct sid fromv$mystat )

));

db449b10422f8268eac479847037eba7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值