• Oracle 10g 内存结构体系学*总结


        学*了*5个月的Oracle 10g,对其体系机构有了一个大体的认识,这次对其内存体系机构作个总结:

           1,Sga :系统全局区

           2,pga: 进程全局区

           3,Uga:用户全局区(是共享服务器,uga在sga中分配,是专有服务器,uga在pga分配)

      这里主要讨论sga和pga:

        目前在Oracle 10g中有手动和自动内存管理,自动内存管理和SQL SERVER 类似,自己来管理和分配内存。pga是内存的一个“堆”;

        PGA(进程全局区)

        我们先看看手动PGA管理:有以下参数

           1,SOrt_AREA_SIZE: 信息换出磁盘之前,用于内存中排序的总量(对与合并联结算法适用)

           2,SOrt_AREA_RETAINED_SIZE: 排序完成后,保存已经排序的数据的内存总量

           3,HASH_AREA_SIZE; 在内存中散列表使用的内存量(用于Hash联结时,小表在内存中生成的数据)

       上面这几个参数,是对一个session中设置的。一般就是几M大小左右,如果太大了,服务器内存也不够啊,想想几千人吧,那数据就是多少个G了。

    这些参数,就是控制排序和hash所用的内存量,都是设置的上限。

        如果这些数据设置得太小,数据库就会将数据写的临时表里存储起来。一般设置手动pga设置比较麻烦,oracle现在可以实现了自动PGA管理。

          在Oracle中设置pga的管理方式:

             WorkArea_Size_Policy:

                设置为manual为手动pga管理

                设置为Auto为自动pga管理,10g以上是默认Auto管理

        当WorkArea_Size_Policy=Auto时,必须设置pga_aggregate_target的值大小

       

        pga_aggregate_target: 是排序和hash联结的所有使用的总内存大小;

        SGA(系统全局区)

          一般dba是通过配置(缓存区缓存,日志缓存,共享池,大池和Java池)来微调系统的。

        

         日志缓存:

            又叫重做日志缓存区:是将数据写到在线重做日志当中,则在写到磁盘前要在”重做缓存区“中临时缓存一些数据。

            数据不会在“重做缓存区”里停留很长时间,LGWR会在以下情况下触发:

               1,每3秒一次

               2,无论何时提交请求

               3,LGWR切换日志时

               4,重做日志区1/3满时,或者包含了1M日志数据时。

           一般重做事务日志就几M,超过了3M就没意义了。

       

       缓存区缓存:

             就是“数据缓存”,太小,查询执行不完,太大,其他进程就缺少内存。

          分3个位置:

              ”default 默认池“ :默认数据都放在这个池中缓存,如果有些数据长期不用,数据会被踢出缓存。

             “keep 保存池 ”:一般将访问比较频繁的数据放在这个池中。此池的数据一直保存(除非其他段要数据),数据不会被踢出

              ”Recycle 回收池“:是将不适合缓存的数据放在这个池中,以免因为这个数据比较大,将其他池的数据踢出缓存。

           

             回收池要小一些,以保证大的数据快速进入和离开缓存。

        共享池

            设计共享池为了反复使用执行计划。数据字典缓存,系统参数

             运行的PL/SQL代码就在共享池里缓存,一般此池不会很大,一般也就300-500M就可以了。

       大池

          因为它用于“大块”内存的分配,共享池不会处理如此大的内存。一般主要用于备份。

       JAVA池

         支持数据库中的java代码。一般比较小

       流池

         设计数据库的共享和复制,设计流池可以避免在流数据库特性下”窃取“共享池10%的空间

       自动设置SGA的大小:

         通过设置Sga_Target来配置大小,这样数据库可以动态调整数据各个池的大小。

     

       

  • 相关阅读:
    tensorflow 镜像
    TDD、BDD、DDD
    Node.js结合Selenium做Web自动化测试
    Selenium 对元素element的操作举例
    Selenium UI 举例 getCssValue
    《测之重器——自动化测试框架搭建指南》
    《Robot Framework自动化测试修炼宝典》道长
    SQLServer中round函数
    SQLServer中对时间和长度的处理
    SQLServer中获取所有数据库名、所有表名、所有字段名的SQL语句
  • 原文地址:https://www.cnblogs.com/zping/p/1260298.html
Copyright © 2020-2023  润新知