设为首页 加入收藏

TOP

Oracle自动内存管理SGA、PGA详解(二)
2014-11-24 07:39:11 来源: 作者: 【 】 浏览:7
Tags:Oracle 自动 内存 管理 SGA PGA 详解
GB 时,共享池组件的大小会立即增加到 2 GB。此大小调整操作中使用的内存从一个或多个自动优化的组件中提取,手动优化的组件的大小不受影响。

手动调整大小的组件的参数也可以动态变更,但不同之处在于,参数的值会立即指定相应组件的精确大小。因此,如果手动调整的组件的大小增大,则增加的那部分内存将从一个或多个自动调整大小的组件处提取。如果手动调整的组件的大小减小,则释放的内存将会提供给自动调整大小的组件。

程序全局区 (PGA)

程序全局区 (PGA) 是包含某服务器进程的数据及控制信息的内存区。这是 Oracle 服务器在服务器进程启动时创建的非共享内存,只有该服务器进程才能访问。由关联到某个 Oracle 实例的所有服务器进程分配的 PGA 总内存,也称为该实例分配的聚集 PGA 内存。
使用共享服务器时,部分 PGA 可位于 SGA 中。

PGA 内存通常包含以下各项:

\

专用 SQL 区:
专用 SQL 区包含绑定信息和运行时内存结构等数据。这些信息是每个会话的 SQL 语句调用所特有的;在其它方面,绑定变量有不同的值,游标的状态也不同。发出 SQL 语句的每个会话都有一个专用 SQL 区。提交同一 SQL 语句的每个用户也都有其自己的专用 SQL 区,该专用 SQL 区使用一个共享 SQL 区。这样,许多专用 SQL 区可与同一个共享 SQL 区关联。专用 SQL 区的位置取决于为会话建立的连接类型。如果会话是通过专用服务器连接的,则专用 SQL 区位于该服务器进程的 PGA 中。不过,如果会话是通过共享服务器连接的,则部分专用 SQL 区将保留在 SGA 中。

游标和 SQL 区

Oracle Pro*C 程序或 Oracle OCI 程序的应用程序开发人员可以显式打开特定专用 SQL 区的游标或句柄,并在该程序的整个执行过程中将它们用作命名资源。数据库为某些 SQL 语句隐式发出的递归游标也使用共享 SQL 区。

工作区

对于复杂查询(例如,决策支持查询),会将大部分 PGA 供内存密集型运算符分配的工作区专用,例如:
基于排序的运算符(如 ORDER BY、GROUP BY 和 ROLLUP)和窗口函数
散列联接
位图合并
位图创建
批量装载操作使用的写缓冲区
排序运算符使用工作区(排序区),对一组行执行内存中排序。与此类似,散列联接运算符使用工作区(散列区),根据其左侧输入内容生成散列表。
工作区的大小是可以控制和优化的。通常,较大的工作区可以显著改进特定运算符的性能,不过代价是消耗较多的内存。
会话内存

会话内存是用于存放会话的变量(登录信息)以及与会话相关的其它信息的内存。对于共享服务器,会话内存是共享的,而不是专用的。

自动 PGA 内存管理

根据 PGA_AGGREGATE_TARGET 参数,动态调整供工作区专用的 PGA 内存量

有助于最大限度地提高所有内存密集型 SQL 操作的性能

默认情况下是启用的

PGA 管理资源
管理 PGA_AGGREGATE_TARGET 初始化参数的统计信息,如 PGA 高速缓存命中百分比

可以在下列动态性能视图中查看有关工作区内存分配和使用的统计信息:
V$SYSSTAT

V$SESSTAT

V$PGASTAT

V$SQL_WORKAREA

V$SQL_WORKAREA_ACTIVE

用于调整 PGA 工作区大小的视图有:

V$PGA_TARGET_ADVICE

V$PGA_TARGET_ADVICE_HISTOGRAM
V$SQL_WORKAREA_HISTOGRAM

-----------------Oracle DB 内存参数

\

ALTER SYSTEM SET MEMORY_TARGET=300M;
虽然仅需要设置 MEMORY_TARGET 来触发自动内存管理,但仍可以为各种高速缓存设置下限值。因此,如果子参数是用户设置的,则这些参数值将是 Oracle DB 服务器自动优化该组件时的下限值。

有效使用内存:准则

尽量使 SGA 适合物理内存。

优化以实现高缓冲区高速缓存命中率,但要注意以下几点:

--即使有效且必需的全表扫描也会降低命中率。
--可能存在因不必要地重复读取同一块而出现命中率虚升的情况。

使用内存指导。

库高速缓存的内存优化准则:提高命中率
为开发人员制定格式使用约定,以便 SQL 语句符合高速缓存的要求。

使用绑定变量。

消除不必要的重复 SQL。

考虑使用 CURSOR_SHARING。

尽可能使用 PL/SQL。

缓存序列号。

连接库高速缓存中的对象。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇oracle11g的dmp文件导入oracle10g.. 下一篇Oracle数据库联机日志文件丢失或..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HyperText Transfer (2025-12-26 07:20:48)
·半小时搞懂 HTTP、HT (2025-12-26 07:20:42)
·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)