zoukankan      html  css  js  c++  java
  • oracle数据库——instance

    instance = 内存结构(SGA,system global area) +后台进程

    内存结构 = 共享池+数据高速缓存+重做日志缓冲区+其他

    后台进程 = DBWn(database writer n个)+LGWR(log writers)+SMON(system monniter)+PMON(progress moniter)+CKPT(checkpoint)+……

    PGA(Program Global Area)= 服务器进程+后台进程

    下面分别介绍各部分:

    共享池

    1、共享池用于存放最近执行的SQL语句数据字典信息,其尺寸由初始化参数SHARED_POOL_SIZE定义。共享池主要由库高速缓存数据字典高速缓存两部分组成。

    库高速缓存用于存放最近执行的SQL语句信息,包括SQL语句文本,解析代码值及其执行计划。执行计划是SQL语句的内部操作步骤。例如:当执行select name from students where grade=90时,如果grade列上不存在索引,执行计划将采用全表扫描;如果有索引,执行计划将使用索引和ROWID定位数据。

    如上图所示,库高速缓存包含许多上下文区,每个上下文区都有相应的SQL语句执行计划,这些上下文区又被称为共享游标。当客户端运行SQL语句时,服务器进程首先检查共享游标是否存在,若存在则按照执行计划直接执行即可;若不存在则生成SQL语句执行计划,并将执行计划存放到相应的上下文区中,然后执行SQL语句。共享游标降低了SQL语句解析的次数,提高了执行性能。

    另外,语句1和语句2由于文本不同,所以占用不同的上下文区,而对于文本完全相同的语句1来说可以共享上下文区。所谓的文本完全相同指的是:语句文本相同;大小写和长度相同;赋值变量相同。

    数据字典高速缓存用于存放数据字典的信息,包括表、列的定义以及权限信息。

    最后,库高速缓存数据字典高速缓存的尺寸是可以变化的。动态改变共享池的尺寸:alter system set shared_pool_size = 60M;

    数据高速缓存

    数据高速缓存用于存放最近访问的数据块信息,它由许多小缓冲区组成。

    数据高速缓存采用LRU(least recently used)算法管理数据高速缓存。

    数据高速缓存的结构:分为三部分,分别是脏缓冲区、空闲缓冲区、忙缓冲区。脏缓冲区是指内容与相应数据块不一致的缓冲区;空闲缓冲区是指内容与相应数据块一致或者不包含数据的缓冲区;忙缓冲区是指服务进程正在存取的缓冲区。

    重做日志缓冲区

    重做日志缓冲区用于记载instance的变化。

    后台进程

    后台进程是指oracle server隐含执行的进程。启动instance时不仅会分配SGA,还会启动后台进程;关闭intance时不仅释放SGA所占的内存空间,而且会释放后台进程所占用的CPU和内存资源。下面介绍一下常用的后台进程:

    SMON(System Monitor):用于执行intance恢复、合并空间碎片并释放临时段。

    PMON(Process Monitor)用于监视服务器进程的执行,并且在服务器进程失败时清除该服务器进程。

  • 相关阅读:
    [PA2014]Muzeum
    [AMPPZ2014]Jaskinia
    [PA2015]Rozstaw szyn
    LOJ 6713 「EC Final 2019」狄利克雷 k 次根 加强版
    Problem. R
    51nod 2583 数论只会Gcd
    51nod 1847 奇怪的数学题
    51nod 1575 Gcd and Lcm
    Problem. Q
    CF868G El Toll Caves
  • 原文地址:https://www.cnblogs.com/suinuaner/p/oracle_instance.html
Copyright © 2011-2022 走看看