pga_aggregate_target与workarea_size_policy相互关系验证

先放上结论:

1. 当pga_aggregate_target设置为非0, 手工设置(workarea _size_policy设置为manual),这时使用的 manual管理模式,而不是auto管理模式

2. 当内存为自动管理时(2个条件同时满足,pga_aggregate_target设置为非0,workarea _size_policy设置为auto),sort_area_size不生效;当内存为手动管理时(1个条件,workarea _size_policy设置为manual,不管pga_aggregate_target是什么值),sort_area_size生效。

问题:

今日,从网上看到一篇总结pga方面参数配置的文章,其中提到<2>点,workarea _size_policy设置为manual,pga_aggregate_target设置为非0,会使用自动内存管理。

我对于其中的第二点持怀疑态度,遂做一个测试。

 

单个session的PGA内存使用量限制有比较多的概念,现在统一梳理一下:

1、关于PGA内存是自动管理还是手工管理,以及*_area_size(例如 sort_area_size)参数是否生效

workarea_size_policy:该参数定义数据库PGA内存是否自动管理,同时涉及到SQL运行中各种内存参数设置是否生效;当PGA内存为自动内存管理(workarea_size_policy =auto),有关SQL运行的各种内存参数设置(例如sort_area_size 排序内存大小)均不生效,但至于SQL运行的各种内存参数设置生否真的生效,还与pga_aggregate_target值有关,具体如下:

(1)workarea _size_policy设置为auto,pga_aggregate_target设置为0 ,不会使用自动内存管理,因为当pga_aggregate_target设置为0时,workarea _size_policy自动设置为manual。

(2)workarea _size_policy设置为manual,pga_aggregate_target设置为非0,会使用自动内存管理。因为,如果设置pga_aggregate_targe为非0,workarea _size_policy自动设置为auto,因此,使用自动管理。

-- 经过自己的测试,这个说法是不正确的,当pga_aggregate_target设置为非0, 手工设置(workarea _size_policy设置为manual),这时使用的 manual管理模式,而不是auto管理模式

(3)如果不设置pga_aggregate_targe,那么系统缺省也是使用自动管理,并且设置该参数的值为SGA的20%和10M中较大的值。

总之:当内存为自动管理时(2个条件同时满足,pga_aggregate_target设置为非0,workarea _size_policy设置为auto),sort_area_size不生效;当内存为手动管理时(1个条件,workarea _size_policy设置为manual,不管pga_aggregate_target是什么值),sort_area_size生效。

测试:

主要通过看v$pgastat 的 如下4个指标来观察到底用了什么方式的pga管理,到底是 manual还是 auto

total PGA used for auto workareas
maximum PGA used for auto workareas
total PGA used for manual workareas
maximum PGA used for manual workareas

1.首先禁用AMM

memory_max_target                    big integer 0
memory_target big integer 0

2. 系统目前状态, pga_aggregate_target=224M , workarea_size_policy= AUTO

3. 手动设置 workarea_size_policy= manual

注释: 在设置为manual之后,测试了一下重新将 pga_aggregate_target设置为另外一个值,这时并不会将workarea_size_policy自动设置为auto,看来官网上说的是从0设置为其他值时,才会将policy自动改为auto

4. 重启实例,可以看到这4个相关指标都是0

5.创建测试表

SQL> create table x as select * from dba_objects;

Table created.

SQL> insert into x select * from x;

86672 rows created.

SQL> insert into x select * from x;

173344 rows created.

SQL> commit;

Commit complete.

6. 执行一个较大的排序查询,select * from x order by OBJECT_ID,LAST_DDL_TIME;

7.再次观察 v$pgastat ,

可以看出  manual的2个相关指标有变化了,而 auto都是0,这里说明了 真实采用的是 manual方式。

8.改回 auto再试试

9.执行sql前

total PGA used for auto workareas                                         0 bytes
maximum PGA used for auto workareas 0 bytes
total PGA used for manual workareas 67584 bytes
maximum PGA used for manual workareas 274432 bytes

10.执行sql  select * from x order by OBJECT_ID,LAST_DDL_TIME;

11. 再次观察,发现auto指标变化了, 而 manual毫无变化

total PGA used for auto workareas                                    429056 bytes
maximum PGA used for auto workareas 7204864 bytes
total PGA used for manual workareas 67584 bytes
maximum PGA used for manual workareas 274432 bytes

12, 经过几次反复的验证,证明了 pga是采用auto模式还是manual模式,是由参数  workarea_size_policy控制的,而跟 pga_aggrate_target没关系。

结论:

(2)workarea _size_policy设置为manual,pga_aggregate_target设置为非0,会使用自动内存管理。
因为,如果设置pga_aggregate_targe为非0,workarea _size_policy自动设置为auto,因此,使用自动管理。 -- 经过自己的测试,这个说法是不正确的,当pga_aggregate_target设置为非0, 手工设置(workarea _size_policy设置为manual),这时使用的 manual管理模式,而不是auto管理模式

总之:当内存为自动管理时(2个条件同时满足,pga_aggregate_target设置为非0,workarea _size_policy设置为auto),sort_area_size不生效;

当内存为手动管理时(1个条件,workarea _size_policy设置为manual,不管pga_aggregate_target是什么值),sort_area_size生效。

(oralce)pga_aggregate_target与workarea_size_policy相互关系验证的更多相关文章

  1. .Net 类型、对象、线程栈、托管堆运行时的相互关系

    JIT(just in time)编译器 接下来的会讲到方法的调用,这里先讲下JIT编译器.以CLR书中的代码为例(手打...).以Main方法为例: static void Main(){ Cons ...

  2. 斯坦福大学公开课机器学习: advice for applying machine learning | regularization and bais/variance(机器学习中方差和偏差如何相互影响、以及和算法的正则化之间的相互关系)

    算法正则化可以有效地防止过拟合, 但正则化跟算法的偏差和方差又有什么关系呢?下面主要讨论一下方差和偏差两者之间是如何相互影响的.以及和算法的正则化之间的相互关系 假如我们要对高阶的多项式进行拟合,为了 ...

  3. 【.Net基础一】 类型、对象、线程栈、托管堆运行时的相互关系

    目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 J ...

  4. H.264中NAL、Slice与frame意思及相互关系

    H.264中NAL.Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带).2(编码条带数据分割块A).3(编码条带数据分割块B).4(编码条带数据分 ...

  5. Anaconda、Miniconda、Conda、pip的相互关系_我是刘振岗_新浪博客

    Anaconda.Miniconda.Conda.pip的相互关系_我是刘振岗_新浪博客 http://blog.sina.com.cn/s/blog_8a122dcf0102x9vn.html

  6. hibernate中的java对象有几种状态,其相互关系如何(区别和相互转换)。

    hibernate中的java对象有几种状态,其相互关系如何(区别和相互转换). 解答:在Hibernate中,对象有三种状态:临时状态.持久状态和游离状态. 临时状态:当new一个实体对象后,这个对 ...

  7. 关于ASP.NET与CLR相互关系的一些总结

    原文地址:http://www.cnblogs.com/jasenkin/archive/2010/10/20/asp-net-clr-relation.html CLR(COM服务器) CLR作为一 ...

  8. synchronized 同步函数的竞争关系验证

    synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码 ...

  9. C#开发微信门户及应用(43)--微信各个项目模块的定义和相互关系

    我们在开发微信相关的应用的时候,一般需要完善的基础模块支持,包括微信公众号,微信企业号,以及一些业务模块的支持,一般随着功能的增多,我们需要非常清晰的界定他们的关系.模块的分拆以及合并往往需要考虑的代 ...

随机推荐

  1. 使用tour_editor.html设置视角和添加热点

    控制初始视角 双击打开vtour文件夹中的tour_editor.html.(请先运行测试服务器,然后在浏览器地址栏中加上tour_editor.html,例如 http://localhost:52 ...

  2. FineReport中树数据集如何实现组织树报表

    组织树报表中由id与父id来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此FineReport提供了一种特殊的数据集——树数据集,只需要简单的设置就能自动递归出层级,方 ...

  3. atitit.js 与c# java交互html5化的原理与总结.doc

    atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参数个数1 1.3. 事件监听2 2. sen ...

  4. Java XML SAX 解析注意

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/4002738.html 什么时候可以把解析值赋给对象 一般从网 ...

  5. jsonp 返回以前必须要再转一次json

    public static void main(String[] args) {        String ajaxJsonStr = null;        AjaxJson ajaxJson ...

  6. 【gp数据库】OLTP和OLAP区别详解

    原来一直使用Oracle,新公司使用greenplum后发现系统的并发性差很多,后来才了解因为Oracle属于OLTP类型,而gp数据库属于OLAP类型的.具体了解如下: 数据库系统一般分为两种类型, ...

  7. MFC连接postgre数据库

    配置环境: include:libpq-fe.h文件 lib:libpq.lib文件 dll:libeay32.dll,libiconv-2.dll,libintl-8.dll,libpq.dll,s ...

  8. asp.net core中DockerFile文件中的COPY

    今天在ubuntu系统中使用docker部署asp.net core时遇到了一个问题,docker build 的时候总会在最后一步提示 lstat obj/Docker/publish: no su ...

  9. 关于第一场HBCTF的Web题小分享,当作自身的笔记

    昨天晚上6点开始的HBCTF,虽然是针对小白的,但有些题目确实不简单. 昨天女朋友又让我帮她装DOTA2(女票是一个不怎么用电脑的),然后又有一个小白问我题目,我也很热情的告诉她了,哎,真耗不起. 言 ...

  10. ZT 链表逆序

    链表逆序 原帖地址http://blog.csdn.net/niuer09/article/details/5961004 分类: C/C++2010-10-23 17:23 18425人阅读 评论( ...