• 1.Oracle的内存结构和后台进程01


    1.Oracle的体系结构

    2.实例之内存

      oracle内存主要分为两部分:SGA+PGA

    1.SGA:全称system global area

      - SGA中包括oracle实例所需要的一系列内存组件,用于存放数据信息和数据控制信息,比如buffer cache/share pool/log buffer...

          - 这些内存信息被所有进程所共享(server process,backgroud process)

      - 在一个实例中只要一个sga,且为所有session共享,随着instance启动而分配

      - instance down时,sag被释放

    2.SGA的基本组件如下:

      

      2.1 share pool

         share pool主要有库缓存(Libary cache),和数据字段缓存(data dictionary cache),以及结果缓存(result cache)等组成。

        

        Library cache:sql和plsql的解析场所,存放sql、plsql的代码,以及它们的执行计划,以备其他用户共享,当一条SQL语句被执行时, Oracle尝试到Library Cache中查找是否有相同的SQL(通过hash_value),如果有 ,将直接重用存在的SQL的信息(执行计划),这个称作软解析(soft pase)或者叫做library cache hit,反之,SQL将被重新解析,这个过程称为hard parse或者叫library cache miss.

        data dictionary cache:存放重要的数据字典信息,以备其他用户共享,且这些信息包含数据库中对象的数据信息,结构信息等,这些信息在SQL解析的过程中需要被频繁使用到。比如说视图dba(all,user)_tables...  基表user$,table$  固化表 X$,x$bh

        server Result cache:这部分保留了sql查询的结果集以及plsql函数返回值,这样对后续的相同的查询,oracle无须加载数据块进行计算,直接使用现有的结果集。

      

      2.2 database buffer cache

         -database buffer cache用于存储从磁盘数据文件中读入的数据,为所有用户共享。

         -服务器进程(server process)负责将数据文件数据从磁盘读入数据内存缓冲区,当后续请求需要这些数据时,如果在内存中,则不再需要重新去去磁盘上进程读取。

         -数据缓冲区中被修改的数据块(脏块)由后台进程DBWN将其写入磁盘。

            -数据缓冲区的大小对数据库的读取速度有直接的影响。

           要弄明白database buffer cache中的几个重要的概念

         database buffer cache=(default pool) +(nodefault pool)

         

         

        其中:default pool(参数db_cache_size)是标准块存放的内存空间大小,SGA自动管理时此参数不用设置。使用LRU算法清理空间,

            no default pool包含keep pool和recycle pool,其中keep pool 用于将一些数据固定在内存中,default pool会根据一个过期的算法(LRU)将过期的脏数据刷到磁盘上。recycle pool主要存放不常用的数据块,避免这些数据块在default pool池中占据空间。其中,no default pool对应的参数有:

            db_nk_cache_size;        指定非标准块大小内存空间,比如2k4k16k32k

            db_keep_cache_size:     存放经常访问的小表或索引等。

            db_recycle_cache_size:  与keep相反,偶尔存放做全表扫描的大表数据。

        

     

     

                     

          

          

     

      

     

      

     

  • 相关阅读:
    转 Linux查看版本信息及CPU内核、型号等
    freeswitch ODBC error: ODBC NOT AVAILABLE!
    asterisk 命令
    Freeswitch mod 安装
    数据库压缩备份
    IEnumreable的使用小结
    新的Layout布局系统
    前台网站开发手记
    容器服务是如何在高速增长下保持高可用性的
    Kubernetes问题排查流程
  • 原文地址:https://www.cnblogs.com/zmc60/p/15492415.html
Copyright © 2020-2023  润新知