`

PGA内存管理策略

 
阅读更多
转自:http://zhidao.baidu.com/link?url=z9PNNWBWVAC6dlAX5_KBRMoUSC0QctbwHEqMIJELKsUpEVDzadLwjrZ3Mn8M5Xcd_c7pDZk7cW9s6CqWFI8jBa

  什么时候使用自动PGA内存管理?什么时候使用手动PGA内存管理?

  白天系统正常运行时适合使用自动PGA内存管理,让Oracle根据当前负载自动管理、分配PGA内存。

  夜里用户数少、进行维护的时候可以设定当前会话使用手动PGA内存管理,让当前的维护操作获得尽可能多的内存,加快执行速度。

  如:服务器平时运行在自动PGA内存管理模式下,夜里有个任务要大表进行排序连接后更新,就可以在该操作session中临时更改为手动PGA内存管理,然后分配大的SORT_AREA_SIZE和HASH_AREA_SIZE(50%甚至80%内存,要确保无其他用户使用),这样能大大加快系统运行速度,又不影响白天高峰期对系统造成的影响。

操作命令

会话级更改

  ALTER SESSION SET WORKAREA_SIZE_POLICY = {AUTO | MANAUL};

  ALTER SESSION SET SORT_AREA_SIZE = 65536;

  ALTER SESSION SET HASH_AREA_SIZE = 65536;

学以致用

  1,排序区:

  pga_aggregate_target为100MB,单个查询能用到5%也就是5MB时排序所需时间

  SQL> create table sorttable as select * from all_objects;

  表已创建。

  SQL> insert into sorttable (select * from sorttable);

  已创建49735行。

  SQL> insert into sorttable (select * from sorttable);

  已创建99470行。

  SQL> set timing on;

SQL> set autotrace traceonly;

  SQL> select * from sorttable order by object_id;

  已选择198940行。

  已用时间:  00: 00: 50.49

  Session级修改排序区为30mb所需时间

  SQL> ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL;

  会话已更改。

  已用时间:  00: 00: 00.02

  SQL> ALTER SESSION SET SORT_AREA_SIZE = 30000000;

  会话已更改。

  已用时间:  00: 00: 00.01

  SQL> select * from sorttable order by object_id;

  已选择198940行。

  已用时间:  00: 00: 10.76

  可以看到所需时间从50.49秒减少到10.31秒,速度提升很明显。

  2,散列区:

  pga_aggregate_target为100MB,单个查询能用到5%也就是5MB时表连接所需时间

  SQL> select /*+ use_hash(tb1 tb2)*/ * from sorttable tb1,sorttable tb2 where tb1.object_id=tb2.object_id;

  已选择49735行。

  已用时间:  00: 00: 40.50

  Session级修改散列区为30mb所需时间

  SQL> ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL;

  会话已更改。

  已用时间:  00: 00: 00.01

  SQL> ALTER SESSION SET HASH_AREA_SIZE = 30000000;

  会话已更改。

  已用时间:  00: 00: 00.01

  SQL> select /*+ use_hash(tb1 tb2)*/ * from sorttable tb1,sorttable tb2 where tb1.object_id=tb2.object_id;

  已选择49735行。

  已用时间:  00: 00: 04.47

  所需时间由40.50秒提升到4.47秒,效果同样很明显。

  备注:以上实验皆执行全表扫描保证相关表读入缓冲区中,避免因数据没读入缓存造成误差。

---另一个网址的:
总结一下:
1。 使用并行参数,8个CPU, 可以用parallel 6 ,最多占用6个CPU, 正常情况下没问题(前提是其他应用没有占超过2个CPU的资源)
2。 nologging, 绝对应该使用,会使速度大幅上升。(减少大量redo log)
3。 PGA, 普通的auto pga最大才100M, 显然没有达到最好性能,应该使用manual pga
alter session set workarea_size_policy=manual;
alter session set  hash_area_size=100000; -- hash_area_size 默认情况下会自动根据sort_area_size*2来调,导致sort_area_size不能超过1G, 手动设了就没问题了。
alter session set sort_area_size=2000000000; -- 在系统可用内存足够的情况下,最大可以到2G
4。 设置高一点的db_file_multiblock_read_count 也有利于提高I/O性能。保证足够大的db_cache_size可以避免free_buffer_wait的出现
5。 可以通过v$session_longops 来监视进度
分享到:
评论

相关推荐

    ORACLE 10学习资料5

    ### ORACLE 10 学习资料5:深入解析Oracle 10g内存结构 #### 4. 内存结构概述 本章旨在探讨Oracle 10g中的关键内存组件,包括系统...此外,根据应用场景选择合适的PGA内存管理策略也是优化数据库性能的关键步骤之一。

    oracle实例的内存(SGA和PGA)进行调整,优化数据库性

    本文将深入探讨Oracle实例的内存管理机制,重点讲解系统全局区(SGA)与程序全局区(PGA)的组成部分及其调整方法,以实现数据库性能的最大化。 #### 一、Oracle实例内存架构概览 Oracle实例的内存结构主要分为两...

    Oracle内存管理(深入解析)

    为了更深入地分析PGA,DBA可以利用事件命令将PGA内存结构转储到跟踪文件中进行研究。 其次,SGA是所有Oracle实例共享的内存区域,它在数据库启动时分配,关闭时释放。SGA包括固定区域、Buffer Cache、Shared Pool、...

    oracle内存管理,深入浅出oracle内存管理,盖国强oracleppt

    Oracle数据库的内存管理是其高性能运行的关键因素之一。在深入理解Oracle内存管理的过程中,我们可以从以下几个方面进行探讨: 1. **内部存储与外部存储**:内部存储主要指的是Oracle实例内存结构,包括SGA(System...

    Oracle内存管理

    Oracle还提供了内存管理工具和策略,例如自动内存管理,它允许DBA设置总体的SGA大小,然后让Oracle自动调整各个组件的大小。另外,pga_aggregate_target参数可以用来控制PGA的总大小,而内存计算公式和策略会自动...

    Oracle PGA详解

    1. **自动PGA管理**:自Oracle 10g开始,引入了自动PGA内存管理功能,允许数据库自动调整PGA大小,以适应工作负载的变化,减少了手动调优的需求。 2. **PGA参数配置**:`pga_aggregate_target`是用于设置PGA总目标...

    操作系统与Oracle内存管理比较.pdf

    【操作系统与Oracle内存管理比较】 本文探讨了操作系统与Oracle数据库在内存管理上的异同,作者王润中通过对比分析,揭示了两者在内存利用和进程管理上的策略。...两者的内存管理策略互相借鉴,可以提升整体系统性能。

    pga_uga.zip_PGA_memory

    因此,监控PGA内存使用情况是确保数据库健康运行的关键。 UGA,另一方面,是每个用户会话独享的内存区域,它存储了用户会话中的所有信息,包括PL/SQL变量、游标、绑定变量值等。UGA在用户登录时创建,在用户退出时...

    Oracle内存管理综述.pdf

    本文将深入探讨Oracle内存管理的核心概念,包括内存结构、内存分配策略以及如何通过配置来提升数据库效率。 Oracle内存主要分为两大部分:系统全局区(System Global Area, SGA)和程序全局区(Program Global Area, ...

    myoracleoracle

    - **自动PGA内存管理**:专注于PGA的自动管理,与自动共享内存管理配合使用,实现整个实例内存的灵活调配。 ### 配置与参考 在实际操作中,配置内存管理需要根据服务器硬件规格、应用程序需求以及预期的工作负载...

    oracle内存全面分析

    二、内存管理策略 1. 自动内存管理 Oracle从10g版本开始引入自动内存管理,允许DBA通过设置SGA_TARGET和PGA_AGGREGATE_TARGET参数,让Oracle自动调整SGA和PGA的大小,简化内存管理。 2. Memory Advisor Oracle的...

    oracle10g系统管理笔记 内存篇

    本文将深入探讨Oracle 10g在内存管理方面的知识,包括内存结构、内存区域的划分、内存分配策略以及常见问题的解决办法。 1. **Oracle内存结构** Oracle数据库内存主要分为两个主要部分:SGA(System Global Area)...

    11gR2concepts内存翻译

    综上所述,Oracle 11gR2的内存架构是一个复杂而精细的系统,它通过自动化的内存管理策略,优化了资源利用,提升了数据库的响应速度和稳定性。理解并掌握这些内存区域及其管理方式,对于数据库管理员来说是至关重要的...

    Oracle 内存分配与调整

    1. 使用自动内存管理:Oracle 10g及以后版本引入了自动内存管理,DBA可以设置一个总的内存预算,让Oracle自动分配SGA和PGA。 2. 分析工作负载:通过监控工具如AWR(Automatic Workload Repository)和ASH(Active ...

    SAP内存管理

    例如,调整Oracle的SGA (System Global Area) 和PGA (Program Global Area) 的大小,以配合SAP系统的内存管理策略。 #### SAP的调整 除了操作系统层面的内存管理外,SAP系统内部也提供了一系列工具和技术来优化...

    Oracle内存全面分析

    内存管理在Oracle中扮演着至关重要的角色,主要分为System Global Area (SGA) 和 Program Global Area (PGA) 两大部分。本文将深入探讨Oracle内存的各个方面,以及如何进行内存优化。 **System Global Area(SGA)*...

    Oracle内存结构全面分析

    内存管理策略涉及如何有效地分配和回收这些内存区域,以确保Oracle的高效运行。例如,Oracle使用LRU(Least Recently Used)算法来管理Buffer Cache中的数据块,将最近最少使用的数据块替换出内存。而SQL语句的解析...

    Oracle8i数据库的SGA管理.pdf

    9. **PGA内存管理**:尽管主要讨论SGA,但PGA的管理同样重要。通过限制PGA大小和使用PGA内存池,可以控制进程内存使用,防止资源过度消耗。 10. **监控和分析**:使用Oracle提供的工具,如`V$视图`,进行性能监控和...

    wxh oracle内存分配

    - **自动内存管理(Automatic Memory Management)**:Oracle 10g引入的特性,允许DBA设置总的SGA和PGA大小,Oracle自动分配各个组件的内存。 - **内存顾问(Memory Advisor)**:提供调整内存分配的建议,通过分析...

Global site tag (gtag.js) - Google Analytics