zoukankan      html  css  js  c++  java
  • Oracle体系结构

    数据库 - 数据文件
    实例 - 内存结构

    一个实例由系统全局内存区域(SGA)以及一系列后台进程组成
    每个连接到数据库的用户都通过一个客户端进程来进行管理。
    客户端进程是与服务端进程相联结的,每个服务器进程都会被分配一块私有的内存区域,称为进程共享内存区域(PGA)


    SGA - 共享池
    共享池是缓存程序数据的地方。执行过的每一条SQL语句在共享池中都存有解析后的内容。
    共享池中存储这些语句的地方称为库高速缓存。解析每一条语句之前,Oracle都会检查库高速缓存中是否已经存在同样的语句。
    如果存在,Oracle直接从缓存中读取并使用该信息而不是将同样的语句再解析一遍。
    这些缓存被所有用户所共享

    Oracle所使用的系统参数也存放在共享池中,称为数据字典高速缓存区域

    Oracle还会存储所有的数据库对象信息

    最少使用算法:LRU 原先已经加载的语句不能长时间存放其中,保留那些最频繁以及最近使用的语句


    库高速缓存
    每条SQL执行前都需要解析并放入高速缓存中
    解析包括:语法验证、检验提及的对象、确认用户权限。然后再查看这个语句是否执行过。如果执行过,就重用(软解析)
    否则为当前语句生成查询计划(硬解析)。当然,硬解析完后会将结果保存在高速缓存中

    查看当前库高速缓存的语句:v$sql

    在SQL语句中,尽量使用绑定变量。这样的话,即使变量发生变化,Oracle认为是同一条语句,不需要重新解析

    锁存器:保护库高速缓存避免被两个同时进行的会话修改

    SGA - 缓冲区缓存
    缓冲区缓存是系统全局区(SGA)最大的部分之一。
    数据从硬盘读取出来后,或者写入硬盘前,它用来存储数据块。块,是Oracle执行操作的最小单位。
    块中包含有表数据行或索引条目。一些块还会包含排序的临时数据。块大小的唯一限制因素取决于操作系统

    查询转换
    查询转换能够并且可能会重写查询,所以Oracle最终执行的SQL不一定就是我们所写的SQL

    视图合并

    子查询解嵌套

    谓语前推

  • 相关阅读:
    [YNOI2017][bzoj4811][luogu3613] 由乃的OJ/睡觉困难综合症 [压位+树链剖分+线段树]
    [bzoj3270] 博物馆 [期望+高斯消元]
    [bzoj4372] 烁烁的游戏 [动态点分治+线段树+容斥原理]
    [Codeforces438E][bzoj3625] 小朋友和二叉树 [多项式求逆+多项式开根]
    [bzoj3813] 奇数国 [线段树+欧拉函数]
    [BZOJ4205][FJ2015集训] 卡牌配对 [建图+最大流]
    Git常见问题解决办法
    电脑常用快捷键
    egret.Shape渲染集合图形
    TypeScript语法学习--变量的声明
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4665270.html
Copyright © 2011-2022 走看看