暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片
老相OracleDBA学习笔记
807
352页
39次
2020-10-21
5墨值下载
资源由 www.eimhe.com 美河学习在线收集提供
老相 Oracle DBA 学习笔记
SQL 语句的执行
SQL语句的执行过
用户连接进来,实例会专门给这个连接开一个进程(前台进程/服务
器进程),这个服务进程,oracle会单独的给他分配一个PGA空间。
现在客户端 一条SQLselect * from dba_data_files;,通过连接送到
了服务器进程,服务器进程收到了这SQL语句,语句oracle认识,
但是不能直接执行,
1先把sql语句解析成执行几乎,然后才能执行服务器进程进程解
析,解析的步骤是先判断sql语句的语法有没有问题,判断sql语句访
问的表有没有权限,判断SQL语句要访问的表或者视图,数据库里
底有没有。判断SQL语句该怎样去执行,选去最优的执行方案。
2、解析需要消耗资源:A用户执行一条SQL语句,消耗了资源,B
户也有可能做相同的业务,有可能执行相同的语句,如果把A用户
执行计划缓存起来,B用户执行的时候就不用再次解析了,直接就
以执行了。
那么SQL语句和相应的执行计划缓存在shared pool中,
服务器进程拿到SQL语句首先进入到share pool中,先查看share
pool中有没有缓存,如果有缓存的话,服务器进程会在share pool中,
找到这条SQL语句以及对应的执行计划然后再去执行,这样就减少
资源由 www.eimhe.com 美河学习在线收集提供
了一个解析的步骤,如果share pool中没有,这时服务器进程就会
行一系列的操作,对这条SQL语句进行解析,生成执行
所以当服务器进程拿到了SQL语句后,会做1、找 2、解析
share pool最主要的作用是缓存SQL语句和对应的执行计划。
share pool的访问和修改的操作都是服务器进程做的。
SQL语句执行的时候,需要去取数据,表的数据都在数据文件中。
buffer cache就是用来缓存数据文件的数据,因A用户访问了某个
表,B用户访问同一个表的可能性非常大的,如果没有buffer cache
的话,每次访问dbf的时候,都要发生物理IO,所以当进程访问dbf
时,服务器进程首先会去buffer cache里面找,这个表所对应的数
buffer cache里面有没有,的话就直接访问buffer cache把数据
取出来通过网络返回给客户端,所以服务器进程执行SQL语句获取数
据的时候,首相找的是buffer cache如果buffer cache没有,就到dbf
上找,从dbf中把数据取出来后不是直接把数据返回给用户,而是把
数据放到buffer cache中,再从buffer cache中把数据返回给用户。
dbf中取数据到buffer cache的操作(物理读)是由服务器进程完成的。
logic IO:逻辑IO,服务器进程执行SQL语句的时候,要访问某个表,
首先要读buffer cache,看buffer cache中有没有这个表的数据,有的
话就直接从buffer cache中读,这种读叫做逻辑读、内存读。
of 352
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜