Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2975字,纯文字阅读大概需要5分钟。
内容图文
![Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~](/upload/InfoBanner/zyjiaocheng/485/7bb5f7b8f68c4c79b9f756e8bbeb44a4.jpg)
- Select id,name from t order by id ;
– SQL 解析(查看语法是否错误,如果没有错误,分析语意,执行此语句的权限)
– 执行计划(ORACLE如何访问数据,按照执行计划取数据)
– 执行SQL
? 从磁盘中读取数据(如果数据在内存中没有,就去磁盘读取)
? 数据处理(数据读到内存后,就进行处理。排序,组合等处理)
? 返回结果(把结果返回给用户)
- Insert into t values(1,‘tigerfish’);
– SQL 解析
– 执行计划
– 执行SQL
? 从磁盘中读取数据块(如果内存中没有)
? 修改回滚段数据块(同时产生redo log)----Oracle特性(将数据修改前的数据放到回滚数据块)
? 修改原始数据块(同时产生redo log)
- Create table t values(id int,name varchar2(10);
– SQL 解析
– 执行计划
– 执行SQL
? 给对象分配初始化的存储空间(段),产生一些undo和redo日志。
? 在Oracle字典表中创建新的对象相关信息(表,字段,各种属性….),产生一些Undo和redo日志。
- Drop table t purge(truncate table t);
– SQL 解析
– 执行计划
– 执行SQL
? 收回对象占用的空间,产生一些undo和redo日志。
? 在Oracle字典表中删除的对象的相关信息(表,字段,各种属性….),产生一些Undo和redo日志。
实例是如何响应用户请求?
- Client Process(用户端进程)向数据库发了一条SQL语句.
- 数据库端会启用一个Server Process(服务器进程).
- Client Process和Server Process组成了一个Session(会话).
- Server Process就会处理用户的请求.
- Server Process会开一块内存(PGA),用户的请求(SQL语句)首先会放在PGA里.
- Server Process开辟了内存后就要开始执行SQL语句了.这时候就需要去访问SGA.
- 访问SGA,首先去Share Pool解析SQL语句,得到执行计划,然后按照执行计划去Database Buffer Cache查找数据.
- 如果Database Buffer Cache没有,Server Process就直接去磁盘里面读数据到Database Buffer Cache.
- 如果Database Buffer Cache里读到了数据,用户需要修改数据块,那么就会在Database Buffer Cache里修改数据块.
- 修改数据块后会产生redo log,redo log Buffer会产生响应的重做项。
- 如果用户发出commit的提交,redo log Buffer会通过LGWR进程将数据写到磁盘上.
- 如果用户发出了checkpoint检查点,数据会被DBWn进程会将修改了的脏数据(当buffer cache被修改了就会标记为脏数据)写入磁盘上.
一条SQL的执行过程:
- 客户端发出请求(update set id=1),连接监听器,监听器将服务转到实例上,ORACLE启动服务器进程,和客户端进程建立连接,就完成了一个会话.
- ORACLE服务器进程将SQL语句在Share pool里面进行解析(语法分析、语义分析(权限啊,表是否存在),生成执行计划)
- ORACLE服务器进程按照执行计划访问数据,先到db buffer里面找数据块.如果有就对数据库做update!
- 如果db buffer里面没有,就会从磁盘相应的数据文件中找.再把数据读到db buffer里面去.就可以修改数据块了.
- 修改数据时会产生一个undo数据(重做数据).(如之前的id=99,那么id=99的数据块就会被放到undo表空间去,方便回滚),然后修改当前的数据块为1.
- 客户端提交commit命令.
- LGWR将undo产生的日志和当前数据块修改产生的日志放在一起,写在磁盘上.
- 客户端发出alter system checkpoint,DBWR将内存中的脏数据写到磁盘上.
![Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~ - 文章图片](/upload/getfiles/0001/2021/4/24/20210424095559569.jpg)
Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~
标签:需要 type 分享 响应 cache ora 属性 dash sof
本文系统来源:http://www.cnblogs.com/scentpath/p/oraclehowwork.html
内容总结
以上是互联网集市为您收集整理的Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~全部内容,希望文章能够帮你解决Oracle是如何工作的?实例是如何响应用户请求?一条SQL的执行过程~所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。