oracle 的SGA与PGA分析

oracle 的实例可以说是由内存和很多的进程组成的,这里的内存实际上是指SGA(system global area),严格意义上来说PGA(program global area)不属于实例的一部分。

SGA 系统全局区 由所有服务进程和后台进程共享,PGA为比较私有的区域,每一个用户会话进程都会有自己的PGA,这块区域不能被其他用户进程所访问。由每个服务进程、后台进程专有。

SGA 
示意图,图片来源网络
来张英文的

Database buffer cache 这块区域对数据库对sql处理的性能有很大的影响,它缓存了从磁盘上检索的数据块。是ORACLE执行SQL的工作区域。在更新数据的时候,用户的会话不直接更新磁盘上的数据,包含关键数据的数据块首先要复制到这一区域,所有的数据库更改首先应用到缓存在这一区域的数据块上,此后数据块将在内存区域保留一段时间, 直至其被其他数据块缓存占用。理想情况下包含频繁访问的数据块都会缓存在这一区域。比如用户进程提交上来一个查询的sql,数据库为了执行这个查询sql会话的进程将扫描buffer cache 里相关的数据块,如果找到了就会发生一次缓存命中,假设缓存区没有相关数据块,oracle将首先包含相关行的数据从磁盘里检索出来,读取到这一区域,然后将结果才返回用户。如果用户发过来的是update等sql,如果buffer cache存在所涉及的数据块,update语句将首先在这以区域进行数据更新,然后将数据写到磁盘中。所以说buffer cache区域的大小直接影响了sql的执行效率。如果buffer cache区域大小设置得当,缓存命中可以达到90%以上。缓存命中率可以再AWR报告中查看。如果命中率很高但是空间很小,这样就会大量的去读写磁盘,影响I/O。直接影响数据库的性能。

Redo log buffer 日志缓冲区。日志缓冲区相对来说是比较小的,他的大小在数据库实例启动时被固定,不能实现自动管理。主要作用是用来记录数据库的每一次的更改,每当数据块发生变化后都被记录在日志离,会话进程不会将日志直接写到磁盘上,否则执行DDL操作的时候,会话就必须等待磁盘读写完成。会话日志先写到 redo log buffer 中当达到一定的数量与状态后,写到磁盘上。这块区域只有几M的空间,默认有oracle确认,如果过大,对性能也会产生极大的影响。如果过大,在DDL语句commit 时,需要写入的内容更多,在发出完成提交消息以及会话工作恢复之前,需要耗费更长的时间。所以这一区域一般由oracle默认分配。

share pool 共享池是SGA里可以说的最复杂的一块区域,缓存了各用户间可共享的各种结构。库缓存,数据字典缓存,PL/SQL区等

Large pool:一个可选的区域,用来缓存大的I/O请求,以支持并行查询、共享服务器模式以及某些备份操作。值得注意的是大池的大小对性能几乎没有影响。这块区域一般由oracle自动管理

Java pool:只有应用程 序需要在数据库中运行JAVA存储过程时才需要JAVA池。

Streams pool:比较高端,供oracle流使用,这里就不做介绍了

PGA
图片来源网络,原谅图片这么小吧

sort area:排序区,当用户需要对某些数据进行排序时,据库系统会将需要排序的数据保存到PGA一个排序区内。然后再在这个排序区内对这些数据进行排序。如需要排序的数据排序区能够容纳这些数据,排序会保存排序后的数据。由于系统从内存中读取数据比从硬盘中读取数据的速度要快几千倍,为此如果这个数据排序与读取的操作都能够在内存中完成,无疑可以在很大程度上提高数据库排序与访问的性能。如果这个排序的操作都能够在内存中完成,显然这是很理想的。但是如果PGA区中的排序区容量不够,不能够容纳排序后的数据,此时,系统会从硬盘中获取一个空间,用来保存这需要排序的数据。此时排序的效率就会降低许多。为此在数据库管理中,如果发现用户的很多操作都需要用到排序,那么用户会设置比较大的排序区,可以提高用户访问数据的效率。

USER SESSON DATA:会话区,一般不需要维护大小,会话区内保存了会话所具有的权限、角色、性能统计等信息,用户进程与数据库建立会话时,系统会将这个用户的相关权限查询出来,然后保存在这个会话区内。如此的话,用户进程在访问数据时,系统就会核对会话区内的用户权限信息,看看其是否具有相关的访问权限。

STACK SPACE:堆栈区还保存着会话变量、SQL语句运行时的内存结构等重要的信息。有时候为了提高SQL语句的重用性,会在语句中使用绑定变量。简单的说,就是SQL语句可以接受用户传入的变量。从而用户只需要输入不同的变量值,就可以满足不同的查询需求。可以大大提高语句的执行效率

CURSOR STATE:当运行使用游标的语句时,Oracle数据库系统会在程序缓存区中间为其分配一块区域。这块区域就叫做游标区。 游标区是一个动态的区域。当用户执行游标语句时,系统就会在这个游标区内创建一个区域。当关闭游标时,这个区域就会被释放。

oracle 的SGA与PGA分析相关推荐

  1. oracle中pga指什么,oracle学习SGA跟PGA理解

    SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:数据库缓冲区.日志缓冲区.共享池,还可能包含:大池,JAVA ...

  2. oracle查询sga以及pga的大小,SGA/PGA的设置与调整

    SGA/PGA的设置与调整 2013-04-10 SGA是用于存储数据库信息的内存区,该信息为数据库进程所共享.它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际 ...

  3. oracle中查看pga大小,oracle调整sga、pga大小

    展开 修改sga大小 1-1查看当前sga大小 SQL> show parameter sga 1-2修改sga_max_size为24G SQL> alter system set sg ...

  4. oracle调整sga、pga大小

    修改sga大小 1-1查看当前sga大小 SQL> show parameter sga 1-2修改sga_max_size为24G SQL> alter system set sga_m ...

  5. Oracle 调整SGA、PGA大小

    SQL> show parameter sga; SQL> alter system set sga_max_size=4096M scope=spfile; System altered ...

  6. oracle sga pga mysql_修改Oracle数据库SGA和PGA大小

    SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库. SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间. 1.以dba身份登录 并查看SGA信息: SQ ...

  7. oracle的sga和pga大小设置

    racle官方文档推荐: MEMORY_TARGET=物理内存 x 80% MEMORY_MAX_SIZE=物理内存 x 80% 对于OLTP系统: SGA_TARGET=(物理内存 x 80%) x ...

  8. Oracle sga和pga的分配

    今天我们来说下Oracle 中sga和pga的分配: modify sga alter system set sga_target=1024m scope=spfile; alter system s ...

  9. oracle数据库内存结构pga/sga/uga做比较分析

    oracle数据库的内存结构比较复杂,下面对pga/sga/uga做比较分析. 1. sga组成: database buffer cache:包括 default pool,keep pool,re ...

最新文章

  1. linux常见基本命令
  2. pomelo 分布式聊天入门客户端demo(c#)
  3. SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
  4. java arraylist用法_Java入门系列:实例讲解ArrayList用法
  5. Redis详解(五)——Redis多实例
  6. jar命令成功完成 java -jar 命令却提示“没有主清单属性”!
  7. Python使用Reportlab处理PDF数据 - 段落
  8. DNS与NS、NS记录
  9. Failed to install ISKernel Files,make sure you have appropriate privileges on this machine
  10. 软件测试——课程感想
  11. Maven华为云仓库
  12. css !important用法以及CSS样式使用优先级判断
  13. AI行业强者愈强?Tesra超算网络助力中小AI开发企业!
  14. Swift中的UIKit重力学(一)
  15. 求求你!不要在网上乱拷贝代码了
  16. 别再用中国人的方法背英语单词了,英国人是这样背的!
  17. python:用OLS 求企业的净利润年平均增长率
  18. H3C交换机的irf配置
  19. e4a数据库mysql中间件_e4a mysql
  20. 平安京服务器维护不能打字,决战!平安京|萌新入坑指南 新手注意六大准则

热门文章

  1. Command python setup.py egg_info failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\
  2. 【网络安全】一款针对Flutter的逆向工程分析工具
  3. json对象(json对象和json数组)
  4. 电影点评系统论文java_电影评论网站系统毕业设计(论文)论文参考.doc
  5. 右斜杠 java chr_PHP(5.3+)中的\(反斜杠)有什么作用?
  6. dede后台-系统基本参数无法保存中文/显示空白
  7. 【已解决】rgss202e.dll与电脑不兼容怎么办?
  8. RocketMQ中的消息类型种类(二)
  9. 前端性能优化 雅虎军规35条
  10. sparksql2.0整理-自用