oracle 体系结构及内存管理 10_PGA
2019独角兽企业重金招聘Python工程师标准>>>
1、PGA作用:用户会话进程的私有内存空间(会话用户的权限信息,全局变量、数据结构和控制信息),存储与本会话相关的信息及数据,没有
共享,将会话执行的SQL中间结果集转移到Server Process 的PGA中进行处理。
2、PGA构成:主要就是该会话的SQL工作区
private SQL area
Session Memory
SQL Work Areas
3、PGA管理方式
自动:推荐使用,所有server process oracle会分配一个大的PGA空间,每一个sp会弹性的获取需要的空间,上限有限制
设定PGA_AGGREGATE_TARGET大小后,开始可以给每个sp分配充足的空间,当所有空间都被使用后,再有新的空间需求时,会再申请
一部分空间,但是这部分空间就只能给分的很少
手动:手工设置排序,hash,map的大小空间,会给每个server process的PGA分配指定大小空间
临时文件:当sp的PGA排序空间不够时,会将一部分数据写入临时表空间的文件上,就是磁盘排序“multi-pass”过程,完全内存排序,磁盘
排序一次,多次,对性能影较大。
4、Dedicated Server专用模式,连接请求能及时响应,连接数量有限负载大,一个连接对应一个server process
Shared Server共享模式,通过调度进程转接,连接量大负载小,连接随机选调度进程,调度进程将收集到sql放入队列里,server process
会轮询队列,找到后执行
5、PGA相关参数设置
在OLTP系统中,典型PGA内存设置应该是总内存的较小部分。
OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%
在DSS系统中,由于会运行一些很大的查询,PGA需要分配加大内存。
DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%
PGA大小设置:
alter system set workarea_size_policy=auto scope=both;
alter system set pga_aggregate_target=512m scope=both;
show parameter area;
sort_area_size:排序区大小定义参数
sort_area_retained_size: 用于保存已排序数据的内存大小
可能产生排序的语句:order by,distinct,union,gorup by,sort merge into,高级统计(cube),sort area:取出所有需
要的数据,放到PGA中,在PGA中进行排序,排完后返给用户,会随着数据大小需要调整;包括要排序的数据和排序后,的数
据,放入磁盘的只是过程排序结果,不是最终结果。没有排序时:随机从buffer中取数据,取到后直接返给用户;
hash_area_size,hash_join_enable:PGA的hash区
bitmap_merge_area_size,create_bitmap_area_size :PGA的BITMAP区域
open_cursors:会话同时执行sql语句的数量200
_pga_max_size:每个会话分配固定空间的大小,不是固定的
查询_pga_max_size,_smm_max_size
select ksppinm "Name", ksppstvl/1024/1024 ||'M' "Value", ksppdesc "Desc"
from x$ksppi x, x$ksppcv y
where x.indx = y.indx and ksppinm in ('_pga_max_size','_smm_max_size');
6、异步IO直接IO
异步IO可以在并发量较大的环境下有效减少WIO,不能提升总体IO吞吐能力,但是能提高IO操作的总体性能,不会明显提升
存储的IO响应时间,可以提高Oracle数据库读取数据文件的效率。
参数:FILESYSTEMIO_OPTIONS #设置oracle在文件系统文件上启用或者禁用异步I/O或者直接I/O
ASYNCH: 在文件系统文件上启用异步I/O,在数据传送上没有计时要求。
DIRECTIO: 在文件系统文件上启用直接I/O,绕过buffer cache。
SETALL: 在文件系统文件上启用异步和直接I/O。
NONE: 在文件系统文件上禁用异步和直接I/O。
与IO相关oracle组件:存储系统,数据,日志,控制文件,临时文件与排序,DBWR,LGWR,前台进程,操作系统
磁盘的转速,磁盘的寻到和读写操作,越大,越快越好,闪存技术。
db_file_multiblock_read_count:一次多块读数量,oracle可以一次多块读
7、PGA与临时表空间
临时表空间组要用于配合PGA保存SQL执行过程结果集,如排序,表连接等置换作用,存储临时表,但临时表不仅仅存储于
临时表空间。
为使并行查询和不同会话使用不同临时表空间可以使用临时表空间组。
.. default tablespace users temporary tablespace group temp tablespace temp1,tablespace temp2
8、PGA相关视图及SQL
V$PGASTA:实例级别的PGA内存使用和自动分配的统计,PGA每个子池及对应的值
V$PGA_TARGET_ADVICE:参照设置PGA的大小,该大小下,命中率,物理磁盘读写,溢出,
Select pga_target_for_estimate/1024/1024 ||'M' "Estimate PGA Target"
,estd_pga_cache_hit_percentage "Cache Hit(%)",estd_extra_bytes_rw/1024/1024 ||'M' "Extra Read/Write"
,estd_overalloc_count "Over alloc count" From v$pga_target_advice;
V$SYSSTAT 、V$SESSTAT :系统排序的情况,内存,磁盘,排序行数
select * from V$SYSSTAT where name like '%sort%';
v$mystat、v$statname:当前会话的PGA分配值及最大值
select name,value from v$statname a,v$mystat b where a.statistic#=b.statistic# and a.name like '%pga%';
v$mystat,v$session,v$process:查询server process 的PGA信息,每个进程PGA的限制,不得超过
PGA_AGGREGATE_TARGET的5%,不得超过_SMM_MAX_SIZE定义的大小。
select spid,program,pga_max_mem,pga_alloc_mem,pga_used_mem,pga_freeable_mem from v$process
where spid in (select spid from v$process where addr in
(select paddr from v$session where sid in (select distinct sid from v$mystat)));
v$process_memory :查看当前会话PGA各个区域使用情况
select p.PROGRAM,p.SPID,pm.CATEGORY,pm.ALLOCATED,pm.USED,pm.MAX_ALLOCATED
from v$process p,v$process_memory pm where p.PID=pm.PID
and p.SPID in (select spid from v$process where addr in (select paddr from v$session where sid in
(select distinct sid from v$mystat ) ));
v$sql_workarea_histogram :PGA排序情况,一次磁盘排序,多次磁盘排序
SELECT LOW_OPTIMAL_SIZE/1024/1024 low_mb,(HIGH_OPTIMAL_SIZE+1)/1024/1024 high_mb,
optimal_executions,onepass_executions,multipasses_executions FROM v$sql_workarea_histogram
WHERE total_executions != 0 and total_executions > optimal_executions;
V$SQL_WORKAREA_ACTIVE:正在执行语句的工作区瞬时情况
select operation_type as type, policy, sid, round(active_time/1000000,2) as a_sec,
round(work_area_size/1024/1024,2) as wsize, round(expected_size/1024/1024,2) as exp,
round(actual_mem_used/1024/1024,2) as act,round(max_mem_used/1024/1024,2) as max,
number_passes as passes, round(tempseg_size/1024/1024,2) as temp from v$sql_workarea_active;
v$sql_workarea :查询具体SQL PGA使用情况
select operation_type as op, policy, round(estimated_optimal_size/1024/1024,2) as e_opt,
round(estimated_onepass_size/1024/1024,2) as e_one, round(last_memory_used/1024/1024,2) as l_mem,
last_execution as last, total_executions as tot, optimal_executions as opt, onepass_executions as one,
multipasses_executions as mult, round(active_time/1000000,2) as sec,
round(max_tempseg_size/1024/1024,2) as tmp_m, round(last_tempseg_size/1024/1024,2) as tmp_L
from v$sql_workarea where sql_id='37qjh5yuha3x9';
9、补充
UGA(User Global Area):用户全局区,特定的会话相关;
dedicated模式下UGA在PGA里,shared模式下UGA在SGA的Large pool里。
参考文档:
http://blog.csdn.net/tlx20093a/article/details/7029225
http://www.2cto.com/database/201309/242229.html
转载于:https://my.oschina.net/peakfang/blog/2245158
oracle 体系结构及内存管理 10_PGA相关推荐
- oracle 体系结构及内存管理 15_存储结构
2019独角兽企业重金招聘Python工程师标准>>> 1.Oracle物理存储结构 控制文件:ctl 数据库名字,物理结构信息,字符集,SCN,检查点,状态信息,归档日志历 ...
- oracle 体系结构及内存管理 13_事务
2019独角兽企业重金招聘Python工程师标准>>> 1.事务的基本概念 一组DML语句 insert.delete.update需要同时执行成功或失败. 事 ...
- Oracle体系结构之内存结构(SGA、PGA)
Oracle体系结构之内存结构(SGA.PGA) 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个 ...
- oracle系列(二)oracle体系结构和用户管理
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 在使用oracle之前,我们一定要对or ...
- Oracle 自己主动内存管理 SGA、PGA 具体解释
ASMM自己主动共享内存管理: 自己主动依据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME ...
- ORACLE 11g 自动内存管理
Overview 在oracle 11g中,使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配.oracle推荐使用自动内存管理简化内存分配. oracle ...
- 云和恩墨技术通讯:Oracle AMM自动内存管理引起数据库阻塞
各位亲爱的用户/读者朋友们: 为了及时共享行业案例,通告共性问题,达成知识共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>(4月刊),通过对过去一段时间的知识回顾和故障归纳,以期提供有 ...
- oracle启用amm,【内存管理】Oracle AMM自动内存管理详解
一. Oracle 的三种内存管理方式 oracle 内存管理有三种方式,每一个 instance 只能够选择一种.这三种管理方式分别是 AMM 自动内存管理( Automatic Memory Ma ...
- oracle内存管理模式amm,Oracle 11g自动内存管理(AMM)相关的初始化参数
Oracle对内存的管理越来越趋向智能化.自动化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Manageme ...
- oracle开启自动内存管理,如何设置oracle自动内存管理
为了方便很多用户们在使用oracle的时候都会开启内存自动管理系统,那么你知道如何设置oracle自动内存管理吗?接下来我们就去看看oracle自动内存管理的设置方法. 设置oralce自动内存管理 ...
最新文章
- tc-auth-lib学习笔记
- HTML DOM - 元素
- 深度解析HashMap
- 动态输出html一些效果失效的处理
- DM368开发 -- 常用指令演示
- Python 推导,内含,迭代器
- 光纤收发器怎么连接?
- c/c++多参数的问题
- 15款值得开发者一试的最新的前端框架
- Shell(6): 多线程操作及线程数
- linux 性能检测工具之 dstat
- OpenGL基础7:彩色三角形
- PTA--Reversing Linked List
- 对JQuery中Ajax应用与jQuery插件的理解与笔记
- linux内存映射对开发版刷屏,TQ6410/OK6410裸机LCD刷屏程序借助UBOOT来执行
- 搭建静态的响应式个人官网
- 谈如何用SNS做淘宝客
- Android 九宫格物理键盘数字英文切换
- Web前端大作业、基于HTML+CSS+JavaScript响应式个人相册博客网站
- java parser .java_Stanford Parser使用之 Eclipse+java调用