• PGA概念


    1. 什么是PGA? 
    Roger--001<oracledba@live.cn&get;20:36:21
     PGA,即Program Global Area 的简称,是一块包含一个服务进程的数据和控制信息的内存区域。 注意,PGA的内存结构是不需要Latch来进行保护的。
    
    Oracle 在实例启动时就开始进行分配,一个 Oracle 进程拥有一个 PGA 内存区。一个 PGA 也只能被拥有它的那个服务进程所访问,且只有这个进程
    
    中的 Oracle 代码才能访问它,和其他进程的pga区域是相互独立的,互不影响。 
    
    
    
    PGA不需要latch 保护,是私有的
    
    PGA用多少,分配多少
    
    
    2.  PGA的设置技巧
    
    在Oracle 10g之前,PGA的大小通过参数pga_aggregate_target 来进行控制,如下:
    SQL&get; parameter pga
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    _pga_max_size                        big integer 209715200
    pga_aggregate_target                 big integer 16777216
    
    且pga的大小受限于_pga_max_size参数的控制,不能超过该参数的设置。
    
    
    SQL&get; show parameter _realfree_heap_pagesize_hint
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    _realfree_heap_pagesize_hint         big integer 64K
    
    内存页 
    
    单个进程 PGA最大4G
    
    
    PGA 分配单位chunk
    
    ----pga dump
    SQL&get; conn /as sysdba
    Connected.
    SQL&get; oradebug setmypid
    Statement processed.
    SQL&get; ALTER SESSION SET EVENTS 'immediate trace name heapdump level 1';
    
    Session altered.
    
    SQL&get; oradebug close_Trace
    Statement processed.
    SQL&get; oradebug tracefile_name
    /home/ora10g/admin/roger/udump/roger_ora_3584.trc
    
    对于PGA的dump 不做过多的描述,这个意义不大。  我们知道PGA 其实主要由3部分组成(准确的说是PGA的可变区域部分):
    
    1 )私有 SQL 区; 
    
    2 )游标和 SQL 区 
    
    3 )会话内存
    
    从这个我们不难看出,PGA中最重要的地方无非是SQL区域。
    
    
    optimal:  即SQL语句能够完全在所分配的SQL工作区内存完成所有的操作。当然这种情况其性能肯定是最优的。
    onepass:  SQL语句需要和disk上的temp表空间交互一次才能完成所有的操作。
    multipass: 通常是由于SQL工作区偏小,从而导致SQL语句需要和disk上的temp 表空间交互多次才能完成所有操作,这种情况下性能无疑是最差的。
    
    
    对于串行操作:
    假设PGA <=500MB,则_smm_max_size = 20%*PGA
    如果PGA在500MB和1000MB之间,_smm_max_size = 100MB
    如果PGA在1001MB和2569MB之间,_smm_max_size = 10%*PGA
    如果PGA>2560MB,则_smm_max_size = 262,060MB
    
    对于并行操作,能够使用的PGA内存按照以下原则分配:
    
    50%* PGA/DOP
    但是注意,当DOP<=5时,_smm_max_size限制生效,并行度超过5的时候,则受另外一个数据库隐含参数_smm_px_max_size的影响
    
    
    

  • 相关阅读:
     随机选择数据库记录的方法
    交叉查询
    Delphi编辑器颜色设置
    Delphi Dll中多线程无法使用Synchronize同步的解决方法(转)
    Delphi FTP例子源码
    DELPHI之备忘四
    界面美化代码
    使Form响应滚轮事件
    配色卡
    Delphi http传输备忘
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352009.html
Copyright © 2020-2023  润新知