Oracle学习之SQL语句执行顺序

1.执行顺序:

客户端输入sql语句

sql语句通过网络到达数据库实例

server porcess接收SQL语句后

  a、将sql语句解析成执行计划,然后才能执行

  b、解析:消耗很多资源:CPU、IO,如在共享池中有缓存则不需要再次解析。

  (共享池:缓存SQL语句以及SQL语句对应的执行计划)

  (buffer case:缓存dbf的数据

  取数据过程:server porcess先检查buffer case中是否有数据,如果有数据则直接将

 buffer catch中的数据返给用户(逻辑读);如果没有则进入dbf中取数据到buffer catch

 (物理读)。

  命中率:逻辑读/(逻辑读+物理读)  

  命中率低:效率低下,关心效率的话应该还查看每秒物理读的次数。

2.smon负责对数据库内部进行维护,pmon对server proces进行维护。

3.buffer cath状态:

已连接(server process在对数据进行读或写的瞬间/pin住)、干净、未使用、脏(需要写,写后缓存数据与数据库数据一致,则缓存变为干净的),使用缓存顺序:未使用->干净->脏

时间: 2024-10-15 11:56:02

Oracle学习之SQL语句执行顺序的相关文章

oracle学习笔记 SQL语句执行过程剖析讲课

oracle学习笔记 SQL语句执行过程剖析讲课 这节课通过讲述一条SQL语句进入数据库 和其在数据库中的整个的执行过程 把数据库里面的体系结构串一下. 让大家再进一步了解oracle数据库里面的各个进程.存储结构以及内存结构的关联关系. 首先来讲整个体系中有客户端.实例和数据库 数据库里有三类文件 控制文件ctl.数据文件dbf.日志文件log 实例中SGA有六大池子 第一大内存区shared pool即共享池 第二大内存区buffer cache 第三块是redo log 我们主要讲上面的三

MySQL sql语句执行顺序

sql语句select语句查询顺序 (7)     SELECT (8)     DISTINCT <select_list> (1)     FROM <left_table> (3)     <join_type> JOIN <right_table> (2)     ON <join_condition> (4)     WHERE <where_condition> (5)     GROUP BY <group_by_

SQL Server SQL语句执行顺序

执行顺序: 1.FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1 2.ON:对vt1表应用ON筛选器只有满足 为真的行才被插入vt2 3.OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行将行作为外部行添加到vt2 生成t3如果from包含两个以上表则对上一个联结生成的结果表和下一个表重复执行步骤和步骤直接结束 4.WHERE:对vt3应用 WHERE 筛选器只有使 为true的行才被插入vt4 5.GROUP BY:按GR

[zz]sql语句执行顺序

来源:http://www.cnblogs.com/qanholas/archive/2010/10/24/1859924.html SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理. 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入.这些虚拟表对调用者(客户端应用程序或者外部查询)不可用.只是最后一步生成的表才会返回 给调用者.

EF生成的SQL语句执行顺序问题。

//实体被更改后,再做删除,EF只生成删除语句 //实体删除后再更改,EF报错 //添加语句会再,更改,删除后执行,更AddObject位置无关 //一个实体多个字段被改,只会生成一句update //多个表的update语句,会按表名顺序先后执行 //两个SaveChanges同时涉及多张表时,不会因为写入顺序(都是排序后的)不同而产生死锁 //update 多个update之间按表名来 --> delete(顺序同上 )->insert(顺序同上) //需要避免与ctx.ExecuteSt

(三)Oracle学习笔记—— sql语句

0. scott 用户默认表介绍 scott用户Tables目录下包含四张表 1. insert(插入)语句 给指定列插入数据: insert into dept(deptno,dname) values(50,'xx'); 插入全部列数据: insert into dept(deptno,dname,loc) values(60,'xx','lll'); 2. update(更新)语句 update dept set dname='司法部' where deptno=50; update de

Mysql 学习之 SQL的执行顺序

mysql的json查询:                                                                       1.一条普通的SQL SELECT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY &

sql语句执行顺序

(8)SELECT (9)DISTINCT (11)<Top Num> <select list> (1)FROM [left_table] (3)<join_type> JOIN <right_table> (2)ON <join_condition> (4)WHERE <where_condition> (5)GROUP BY <group_by_list> (6)WITH <CUBE | RollUP>

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <havin