zoukankan      html  css  js  c++  java
  • oracle数据库查询原理

       说到查询原理首先要知道ORACLE的体系结构。数据库服务由:实例、数据库文件这两部分构成。实例部分包括: SGA(System Global Area) 和PGA (Progam Global Area)以及后台进程构成。实例包括:数据文件、控制文件、日志文件、参数文件等。

      当用户写入sql语句开始查询时,首先进入到PGA(PGA作用是保存连接信息和权限信息进行预处理),sql语句在PGA会生成一个唯一的HASH值(类似于身份证)。然后进入到SGA的共享池里,在共享池里如果存在一样的HASH值,则直接进行sql语句解析。如果没有相同的HASH值那就要检查 sql语法是否正确和语义是否正确是否有权限,没问题后生成一个HASH值保存在共享池里,再进行sql语句解析。sql解析的时候会优化器会分析诸如走索引还是不走索引等,最终选择一条效率最高的路线,将改执行计划保存下来。下一步就是到数据缓冲区 去取数据了。如果恰好此时缓冲区有相应的数据,则取到该数据,查询结束。如果数据缓冲区没有数据,就麻烦了得到磁盘中的数据文件去读取数据。经过磁盘IO查询时间会大大增加。查到了就返回查询结果,如果没有查到则返回空。

    ORACLE数据库设计的这么复杂就是为了优化查询效率,尽量让数据库少做事!使我们调用数据库的时候更有效率。

  • 相关阅读:
    转: wireshark过滤规则
    PHP开发
    转:python安装pycrypto
    How to use pycharm to debug scrapy projects
    VCForPython27.msi安装后, 还显示error: Unable to find vcvarsall.bat
    Dcgpofix
    Dsamain
    组托管服务帐户概述
    创建 PSO
    介绍 Active Directory 域服务 (AD DS) 虚拟化
  • 原文地址:https://www.cnblogs.com/wanghongsen/p/8082569.html
Copyright © 2011-2022 走看看