zoukankan      html  css  js  c++  java
  • PL/SQL Virtual Machine Memory Usage

    PL/SQL Program Units即PL/SQL程序单元,常被叫做"library units"或lib-units. 参考以下模块类型:
    • package spec
    • package body
    • top-level function or procedure
    • type spec
    • type body
    • trigger
    • anonymous blocks.
    PL/SQL 虚拟机的内存使用主要体现在4个方面:
    • PGA
      • PL/SQL stack call,用于保存本地变量和其他一些状态结构
      • NCOMP生成的动态链接库文件
    • CGA
      • 二级内存(secondary memory),分配的堆和大的可收缩本地变量如大的strings、Lob或collections
    • UGA
      • 程度单元的实例(library-unit instantiations),如package global variables, DL0/ DL1 dependency vectors, display frame等
    • SGA 共享池中的MCODE子堆
    KGL - Kernel Generic Library Manager 该layer管理会话间需要共享的资源,如PL/SQL MCODE,Diana,Source,SQL cursor,SQL Plan) KGI - Kernel Generic Instantiation Layer. 该layer管理特定会话非共享的资源,如实例化的包含了包全局变量状态信息的PL/SQL程序单元 KOH/KGH 该layer用以管理heap service堆服务 KGL_Entry_PLSQL_UNIT   PLSQL MCODE Heap的属性
    • machine dependent binary format for a compiled PL/SQL library-unit.
    • to execute code in a lib-unit, its MCODE heap must be loaded in memory.
    • MCODE is loaded in SGA and is “pinned” for CALL duration.
    • once unpinned, the heap may be aged; hence, may need to get re-loaded.
    • important to page large data structures in SGA.
    MCODE Heap: Subcomponents
    • EntryPoint Piece (PL_UEP)
    • Code Segment or Byte Code Piece (PL_UCP)
    • Constant Pool:
      • Data Segment (PL_UKP)
      • Handle Segment (PL_UHS)
    • SQL Strings Table (PL_USP)
    PL/SQL Instantiations
    • When a lib-unit is first referenced by a program (session) an instantiation of the lib unit is created.
    • PL/SQL relies on KGI for inst obj mgmt.
    • A PL/SQL lib-unit instantiation consists of:
      • PLIO struct (the handle of the PL/SQL inst obj)
      • Static Frame
      • Secondary (Heap) Memory for package globals
    • PLIO Struct
      • first portion of PLIO struct is the KGIOB struct (kgi’s portion of the object handle)
      • points to the static frame struct (PLIOST)
      • also contains other book-keeping info (such as memory duration of instantiation’s work area, etc.)
    • Static Frame:
      • represents that part of instantiation’s work area whose size is compile-time determined.
      • the root of the static frame is PLIOST struct which leads the following sub-pieces:
        • depends-on array to global variable vectors (DL0)
        • depends-on array to other instantiations (DL1)
        • Display Frame (DPF)
        • global variable vector for this unit (GF)
        • primary memory for global variables.
    • Secondary Memory for package globals
      • used to allocate data types that are stored out-of-line (heap allocated) e.g., collections, large strings, large records, LOBs, datetime types, etc.
    Structure of a PLSQL Instantiation Object Memory Model In PLSQL Instantiation
  • 相关阅读:
    PHP 抽象类
    PHP使用rabbitmq发邮件简单使用
    自定义Chrome插件Vimium
    用Paint Tool SAI绘制漫画
    AutoHotkey 使用笔记
    Unity 性能
    VS2015解决非Unicode编码包含中文字段无法编译的问题
    高DPI设置时禁用显示的方法
    Excel 统计在某个区间内数值的个数
    自定义宏把Word打造成全快捷键编辑器
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967836.html
Copyright © 2011-2022 走看看