zoukankan      html  css  js  c++  java
  • PGA_AGGREGATE_TARGET 原理

    PGA_AGGREGATE_TARGET参数的理解

    PGA结构图:

     

     
     

                                 

    在Oracle9i之前,PGA的计算和控制都是比较复杂的事情,从Oracle9i开始,Oracle提供了一种SQL内存管理的新方法:自动化SQL执行内存管理(Automated SQL Execution Memory Management),使用这个新特性,Oracle可以自动调整S Q L内存区,而不用关闭数据库,这一改进大大简化了DBA的工作,同时也提高了Oracle数据库的性能。

    为实现自动的PGA管理,Oracle引入了几个新的初始化参数:

    1.PGA_AGGREGATE_TARGET-此参数用来指定所有session总计可以使用最大PGA内存。这个参数可以被动态的更改,取值范围从10M -- (4096G-1 )bytes。
    2。WORKAREA_SIZE_POLICY-此参数用于开关PGA内存自动管理功能,该参数有两个选项:AUTO 和 MANUAL,当设置为AUTO时,数据库使用Oracle9i提供的自动PGA管理功能,当设置为MANUAL时,则仍然使用Oracle9i前手工管理的方式。
    缺省的,Oracle9i中WORKAREA_SIZE_POLICY被设置为AUTO。

    需要注意的是,在Oracle9i中,PGA_AGGREGATE_TARGET参数仅对专用服务器模式下(Dedicated Server)的专属连接有效,但是对共享服务器(Shared Server)连接无效;从Oracle10g开始PGA_AGGREGATE_TARGET对专用服务器连接和共享服务器连接同时生效。

    PGA_AGGREGATE_TARGET 参数同时限制全局PGA分配和私有工作区内存分配(????):

    1.对于串行操作,单个SQL操作(其对应的服务器进程)能够使用的PGA内存按照以下原则分配:
    MIN(5% PGA_AGGREGATE_TARGET,100MB)
    2.对于并行操作(的每个并行服务器进程还是说协调者进程?)
    30% PGA_AGGREGATE_TARGET /DOP (DOP=Degree Of Parallelism 并行度)

    要理解PGA的自动调整,还需要区分可调整内存(TUNABLE MEMORY SIZE)与不可调整内存(UNTUNABLE MEMORY SIZE)可调整内存是由SQL工作区使用的,其余部分是不可调整内存。
    启用了自动PGA调整之后, Oracle仍然需要遵循以下原则:

    UNTUNABLE MEMORY SIZE + TUNABLE MEMORY SIZE <=PGA_AGGREGATE_TARGET

    注释:

    可调整区+不可调整区,代表什么?PGA?

    可调整内存就是SQL工作区(SQL work area),其余部分是不可调整内存。

     

     

    PGA自动管理机制数据库系统只能控制可调整部分的内存分配,如果可调整的部分过小,则Oracle永远也不会强制启用这个等式(=)。

    另外,PGA_AGGREGATE_TARGET参数在CBO优化器模式下,对于SQL的执行计划会产生影响。Oracle在评估执行计划时会根据PGA_AGGREGATE_TARGET参数评估在Sort,HASH-JOIN或Bitmap操作时能够使用的最大或最小内存,从而选择最优的执行计划。

    对于PGA_AGGREGATE_TARGET参数的设置,Oracle提供这样一个建议方案
    1.对于OLTP系统
    PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 20% 
    2.对于DSS系统
    PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 50%

    也就是说,对于一个单纯的数据库服务器,通常我们需要保留20%的物理内存给操作系统使用,剩余80%可以分配给Oracle使用。Oracle使用的内存分为两部分SGA和PGA,那么PGA可以占用Oracle消耗总内存的20%(OLTP系统)至50%(DSS系统)。
    这只是一个建议设置,更进一步的我们应该根据数据库的具体性能指标来调整和优化PGA的使用。

  • 相关阅读:
    关于js计算非等宽字体宽度的方法
    [NodeJs系列]聊一聊BOM
    Vue.js路由管理器 Vue Router
    vue 实践技巧合集
    微任务、宏任务与Event-Loop
    事件循环(EventLoop)的学习总结
    Cookie、Session和LocalStorage
    MySQL 树形结构 根据指定节点 获取其所在全路径节点序列
    MySQL 树形结构 根据指定节点 获取其所有父节点序列
    MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators
  • 原文地址:https://www.cnblogs.com/opps/p/4747651.html
Copyright © 2011-2022 走看看