oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程

一般来说,数据库处理SQL都会经过三个过程:解析(parse)、执行(exec)、返回结果(fetch)

1.解析

当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL语句到达oracle实例,并在Shared pool 中的 Library Cache 查找是否存在该语句对应执行计划的缓存。

如果不存在则将该SQL进行硬解析(Hard parse),生成最优化的执行计划(plan),并将该执行计划等信息载入Library Cache。

如果存在则不经过硬解析,而是直接进行软解析(Soft parse),从而减少数据库的分析时间。

2.执行

server process首先在buffer cache中查找是否存在该执行计划所对应的数据块,如果存在,就直接进行DML操作(逻辑IO),否则应从数据文件中将数据块读取到buffer cache中,再进行DML操作(物理IO)。

3.返回结果

对于SELECT语句需要返回结果,首先看是否需要排序,如果需要则排序后返回给用户。

对于其他DML语句(insert/delete/update),则无需返回结果。当buffer cache中的数据块被修改时,server process将自动记录buffer的改变过程到SGA中的redo log buffer,最终分别由DBWR和LGWR进程负责将buffer cache中的脏数据块和redo log buffer中的日志写到磁盘中的data file和redo log file。

解析类型:硬解析、软解析、软软解析

对SQL的解析都需要频繁地访问数据字典

硬解析:

判断SQL语句是否存在语法、语义的问题

判断SQL语句所涉及的对象(表、视图)是否存在

判断执行SQL语句的用户对涉及的对象是否有权限

选择最优的执行方案,生成执行计划

其中生成执行计划最消耗系统资源(CPU、I/O、Memory),尤其是CPU和I/O资源

软解析:只判断SQL语句的语法、语义、对象权限,而不生成执行计划

软软解析:不解析SQL> select name,value from v$sysstat where name like 'parse%' ;

NAME VALUE

------------------------------ ----------

parse time cpu 1339

parse time elapsed 17374

parse count (total) 23639

parse count (hard) 3060

parse count (failures) 149

parse count (describe) 9

命中率:

命中率在Oracle数据库的多个地方都会被提起

例如当一个进程需要访问数据时,首先确定数据是否存在Buffer Cache中,如果存在(称为高速缓存命中),则直接读取数据(逻辑IO/内存读);如果不存在(称为高速缓存未命中),则需要在Buffer Cache中寻找足够的空间将磁盘上需要的数据块复制到Buffer Cache中(物理IO/硬盘读)。

命中率=逻辑IO/(逻辑IO+物理IO)*100%

注:如果命中率低肯定有问题,但命中率高不一定没问题(逻辑IO远高于物理IO,但物理IO仍旧很高的情况下)

可以通过操作系统命令vmstat、iostat查看当前系统的IO情况[oracle@ora11g ~]$ vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 0 374572 25260 788168 0 0 262 34 239 253 1 4 80 16 0

2 0 0 374556 25268 788172 0 0 0 36 909 1341 0 1 99 0 0

0 0 0 374556 25268 788172 0 0 0 0 876 1248 0 1 99 0 0

0 0 0 374556 25268 788172 0 0 16 80 974 1495 0 1 99 0 0

0 0 0 374556 25276 788164 0 0 0 48 966 1428 0 1 99 0 0

[oracle@ora11g ~]$ iostat 1 5

Linux 2.6.18-308.el5 (ora11g.example.com) 07/17/2013

avg-cpu: %user %nice %system %iowait %steal %idle

1.00 0.00 3.85 15.19 0.00 79.96

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 33.72 1551.26 202.49 1052263 137352

sda1 0.10 2.58 0.01 1749 4

sda2 22.27 1256.66 141.92 852432 96271

sda3 0.07 2.37 0.00 1610 0

sda4 0.01 0.02 0.00 11 0

sda5 2.17 58.06 4.54 39382 3080

sda6 2.40 60.32 15.53 40920 10532

sda7 2.85 77.55 16.47 52605 11173

sda8 3.01 76.16 8.77 51663 5949

sda9 0.80 17.03 15.25 11554 10343

avg-cpu: %user %nice %system %iowait %steal %idle

0.00 0.00 0.55 0.00 0.00 99.45

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 5.00 32.00 128.00 32 128

sda1 0.00 0.00 0.00 0 0

sda2 0.00 0.00 0.00 0 0

sda3 0.00 0.00 0.00 0 0

sda4 0.00 0.00 0.00 0 0

sda5 0.00 0.00 0.00 0 0

sda6 1.00 0.00 32.00 0 32

sda7 2.00 32.00 32.00 32 32

sda8 1.00 0.00 32.00 0 32

sda9 1.00 0.00 32.00 0 32

avg-cpu: %user %nice %system %iowait %steal %idle

0.26 0.00 0.77 0.26 0.00 98.71

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 2.00 0.00 104.00 0 104

sda1 0.00 0.00 0.00 0 0

sda2 2.00 0.00 104.00 0 104

sda3 0.00 0.00 0.00 0 0

sda4 0.00 0.00 0.00 0 0

sda5 0.00 0.00 0.00 0 0

sda6 0.00 0.00 0.00 0 0

sda7 0.00 0.00 0.00 0 0

sda8 0.00 0.00 0.00 0 0

sda9 0.00 0.00 0.00 0 0

avg-cpu: %user %nice %system %iowait %steal %idle

0.26 0.00 0.26 0.00 0.00 99.48

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 4.00 0.00 32.00 0 32

sda1 0.00 0.00 0.00 0 0

sda2 0.00 0.00 0.00 0 0

sda3 0.00 0.00 0.00 0 0

sda4 0.00 0.00 0.00 0 0

sda5 1.00 0.00 8.00 0 8

sda6 1.00 0.00 8.00 0 8

sda7 1.00 0.00 8.00 0 8

sda8 0.00 0.00 0.00 0 0

sda9 1.00 0.00 8.00 0 8

avg-cpu: %user %nice %system %iowait %steal %idle

0.00 0.00 0.78 0.00 0.00 99.22

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 13.00 160.00 208.00 160 208

sda1 0.00 0.00 0.00 0 0

sda2 4.00 0.00 80.00 0 80

sda3 0.00 0.00 0.00 0 0

sda4 0.00 0.00 0.00 0 0

sda5 0.00 0.00 0.00 0 0

sda6 1.00 0.00 32.00 0 32

sda7 3.00 64.00 32.00 64 32

sda8 4.00 96.00 32.00 96 32

sda9 1.00 0.00 32.00 0 32

也可以通过v$buffer_pool_statistics视图查看命中率的情况SQL> SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS,(1-(PHYSICAL_READS/(DB_BLOCK_GETS+CONSISTENT_GETS)))*100 "Hit Ratio" FROM V$BUFFER_POOL_STATISTICS WHERE NAME='DEFAULT';

NAME PHYSICAL_READS DB_BLOCK_GETS CONSISTENT_GETS Hit Ratio

-------------------- -------------- ------------- --------------- ----------

DEFAULT 12786 14986 158305 92.6216595

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

otb100matlab,ECO for tracking 在 OTB100 基准测试和 VOT2016 数据集中的实验结果

目前本文所涉内容均未使用图形处理器。运行在有图形处理器环境下的实验将在稍后补充,敬请关注。需要准备的文章和工具有:一、集成 OTB1001.1 下载基准测试在该目录中可以看到:trackers 目录中已经包含了若干跟踪算法。而我们要做的就是把 ECO…

如何设置oracle_home变量,oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?

oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?我遇到了与此处列出的问题相同的问题:尽管我没有丢失密码,但如何恢复或更改Oracle sysdba密码,我最初在configure脚本中输入了两次,然后登录(localhost:…

oracle脱机什么意思,脱机的是什么意思

1. 或者是,将记录传送到脱机系统去处理,以降低交换机的负荷。Alternatively, the records can be transferred to an off-line system for processing, to reduce the load on the exchange.2. 虽然第三方可用的应用软件很少,但在 Windows 1.…

oracle adg 备份,Oracle Physical Dataguard环境使用RMAN备份和恢复

Oracle Physical Dataguard环境使用RMAN备份和恢复由于Physical Dataguard使用的是块恢复技术来保持和PRIMARY的一致性,因此可以在STANDBY上进行rman备份,从而减轻PRIMARY的压力.当PRIMARY出现数据库故障时,可以使用在STANDBY上的备份来进行恢…

matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现

维普资讯 http://doc.docsou.com第2 9卷总第 1 1 3期物流商坛物流配送路径优化问题遗传算法的实现The Re lz to f Ge tc Al o ih o a ia i n o ne i g r t m f VRP Ba e o t e M a l b s d n h tap p p p p p p p p p p p p p p ) ≯≯ p p p p ≯ ≯ p≯≯≯≯≯≯≯弓晋丽 .程…

oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库

Oracle Study之--通过RMAN克隆测试库通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库。这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆)。ORACLE在数据库拷贝和数据库克隆之间惟一不同的是拷贝的数据库不能更改名称…

清空临时表oracle,【Oracle相关】Oracle中如何清空临时表空间

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼【问题】数据库临时表空间占用空间太大,暂用大量磁盘空间。【处理】清空临时表空间Oracle1.启动数据库 startup2.查看当前的数据库默认表空间:SQL>select * from database_properties whereproperty_name…

linux挂载目录到分区,Ubuntu7.10下挂载/home目录到一个分区的方法

最近在一个9.5G的旧硬盘上装了个Ubuntu7.10,在安装时选择了自动分区安装,结果只有两个分区,/和swap,后来觉得一妥,就用gparted重新调整了分区,现在想把砍出事的分区挂载/home目录。昨晚试了一晚都没有弄好&…

linux 内存规划,生产场景怎么对linux系统进行合理规划分区?

分区的根本原则是简单、易用、方便批量管理。根据服务器角色定位建议如下:①单机服务器:如8G内存,300G硬盘分区: /boot 100-200M,swap 16G,内存大小8G*2,/ 80G,/var 20G(也可不分)&a…

linux终端美化,如何美化你的命令行终端Terminal

Linux下的终端是很有魅力的,你可以进行些简单的配置让它变得更加华丽,让枯燥的命令行也变得生动起来。下面进行些配置是我使用的,先看下效果图命令行是以我非常喜欢的Avirl为背景的,同时把终端的字体放大了,字体颜色为…

linux重启服务挂载盘消失,如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况...

本文在介绍如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。ECS Linux服务器重启服务器、初始化系统后数据盘不见了问题现象:Linux系统服务…

linux测试函数耗时tick数,C语言中怎样测验函数执行时间

有4种方法可以达成测算程序运行时间的目的。它们分别是使用clock, times, gettimeofday, getrusage来实现的。下面就来逐一介绍,并比较它们的优劣点。系统测试环境:VirtualBox (Ubuntu 9.10)gcc version 4.4.1libc6 2.10.1-0ubuntu16Core Duo T2500 2GMH…

linux 修改Db2主机名,对DB2服务器主机名的修改的正确操作流程

文章主要描述的是如何正确的对DB2服务器主机名的修改,在实际操作中由于出于多种原因,在DB2数据库的服务器的实际使用过程中,用户有可能对DB2数据库服务器的主机名进行修改,本文详细介绍了修改DB2的主机名需要做的修改工作。环境:产…

x86_64 arm制linux-gcc,arm-linux-gcc 制作

序言:其实,如果没有充裕的时间,交叉编译器完全不用自己建,网上下载直接拿来用就可以了。之所以写这博客,一是为了和大家交流,二是为了防止由于时间的流逝再也找不到当初的笔记。人说好记星不如烂笔头&#…

obs捕获窗口没有窗口_学习工具 | 视频录制软件OBS

小编今天为你们带来了一位新朋友,它就是:OBS了解OBSOBS是免费和开源软件的视频录制和实时流。在 Windows、Mac 或 Linux 上都能够快速轻松地下载并开始流式传输。小知识:流式传输:主要指通过网络传送流媒体(如视频、音频)的技术总…

linux webshell 页面管理,instantbox:30s内快速搭建可通过webshell管理的Linux系统

点击上方蓝色字体,关注我们如何快速搭建一个Linux环境,肯定非docker莫属。但通过instantbox,可以带给我们比docker更好的体验:在不到 30s 内快速搭建一个干净、开箱即用的多个临时的Linux 系统,如Ubuntu、Centos、Arch…

局域网共享工具_局域网文件共享

局域网文件共享的方式都有哪些?局域网文件共享的方式还是比较多的,有几种可参考操作: 在多台电脑上开启网上邻居共享,这样电脑直接打开网上邻居就可以访问对方的文件夹和资料了。 可以安装辅助软件,比如:坚…

linux重启was控制台报错,IHS启动时报错,从was控制台传播插件失败

IHS启动时报错,从was控制台传播插件失败集群IHSWAS,以前单独访问某一个节点http://ip:9080可以访问,最近无法访问(9080可以telnet通),通过日志发现,以下问题请各前辈帮帮忙IHS启动时报错: 版本6.1.0.31[Th…

sdp ddp内存怎么分_旗舰手机跑分66万+,缩短与PC差距,手机成生产力工具也许不是梦...

现在人们无论是在买电脑还是买手机的时候总是喜欢拿跑分来衡量产品的硬件性能,其实长时间的使用产品才是体验产品性能最真实的体验,但是往往需要先有机会拿到产品才行。除此之外也许跑分是最直观的手段。虽然跑分不代表最终体验,但是通过横向…

wave6000可以c语言编程吗,WAVE6000使用教程初步.doc

PAGEPAGE 12WAVE集成调试软件使用初步说明:本文档是对WAVE集成调试软件使用的初步说明,其中调试软件中有许多功能没有涉及,希望同学们通过使用进一步掌握。一、启动启动WAVE可以通过两种方式:(1)桌面上WAVE快捷方式。(2)安装目录下…