Oracle-OCP学习笔记:PGA

栏目: 数据库 · 发布时间: 6年前

内容简介:实际工作中,Oracle中有两个很重要:ServerProcess 和 PGA。SGA:Shared Global area

Oracle-OCP学习笔记:PGA

实际工作中,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 )

));

Oracle-OCP学习笔记:PGA


以上所述就是小编给大家介绍的《Oracle-OCP学习笔记:PGA》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++程序设计语言

C++程序设计语言

Bjarne Stroustrup / 裘宗燕 / 机械工业出版社 / 2010-3-1 / 99.00元

本书是在C++语言和程序设计领域具有深远影响、畅销不衰的著作,由C++语言的设计者编写,对C++语言进行了最全面、最权威的论述,覆盖标准C++以及由C++所支持的关键性编程技术和设计技术。本书英文原版一经面世,即引起业内人士的高度评价和热烈欢迎,先后被翻译成德、希、匈、西、荷、法、日、俄、中、韩等近20种语言,数以百万计的程序员从中获益,是无可取代的C++经典力作。 在本书英文原版面世10年......一起来看看 《C++程序设计语言》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换