【体系结构】一条SQL语句经历了什么
我们都知道 Oracle 是通过 SQL 语句来查询或者进行修改的。那么 SQL 从客户端执行开始,经历了哪些进程?哪些 SGA ?是怎么进入到数据文件的呢?请往下看
情况一:在数据库中查询 select
如图所示:
① 客户端输入 SQL,SQL 语句通过网络到达数据库实例,前台进程(服务器进程)接受 SQL 语句, PGA 这时会分配一段空间给前台进程。
② 将 SQL 语句解析为“执行计划”,然后才能执行
解析这部分消耗很多资源: CPU 和 I/O 。
此时 SQL 语句和执行计划都会被缓存在共享池 (shared pool) 中
③ 通过生成的执行计划在数据库缓冲区( buffer cache )和 dbf 文件中找数据
此过程会涉及数据库缓冲区,数据库缓冲区的作用就是缓存 dbf 的数据。所以是首先从数据库缓冲区看是否有数据,有的话就从数据库缓冲区中获取,如果没有就从 dbf 文件中获取。 dbf 中的数据首先会传到数据库缓冲区中。然后在通过前台进程将数据返回客户端。
① ② ③过程都是有前台进程完成
情况二:修改某个表的数据
① 同查询一样,客户端将要求前台进程传输到共享池中,然后到数据库缓冲区读数据。如果数据库缓冲区中没有数据,那么就从 dbf 文件中找, dbf 中的数据会传送到数据库缓冲区,由前台进程进行读取。
② 前台进程在数据库缓冲区中对表进行修改,提交,此时,会产生日志。产生的日志会写到日志缓冲区中。
③ 在数据库缓冲区中修改完数据后,此时内存中的数据和数据文件中的数据不一致。需要将内存中的数据写到数据文件中。这个过程由数据库写进程来完成。
④ 内存中日志缓冲区产生的日志需要写到日志文件中,这个过程由日志写进程完成。
------------- end ---------------
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31529886/viewspace-2641118/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31529886/viewspace-2641118/
【体系结构】一条SQL语句经历了什么相关推荐
- linux sql命令行查询语句不要换行_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?...
mysql执行一条sql查询语句背后发生了什么呢? 我是李福春,我在准备面试,今天的题目是: mysql的体系结构是怎样的?一条sql语句在mysql的体系结构中经历了什么? 答: mysql体系结构 ...
- 面试题:一条 sql 语句是如何经过 MySQL 的体系结构的?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:有了这 4 款工具,老板再也不怕我写烂SQL了个人原创+1博客:点击前往,查看更多 作者:李福春 来源:http ...
- mysql怎么刷题_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?
{port} -u${user} -p ,输入密码. 使用连接器连接服务端: 连接成功之后,权限修改不会影响当前连接,连接的有效期默认是8个小时: 连接之后,执行过程中使用内存会持续增加,应该定时重置 ...
- 一条SQL语句从开始到结束到底经历了什么?
Mysql逻辑架构图 借用很经典的一幅图,先来个全局的了解,SQL执行到底有哪些步骤. Mysql逻辑架构分为两层 第一层Server层 第二层存储引擎层 Server层 连接器 是指通常我们所看见的 ...
- mysql select from user_select * from user 这条 SQL 语句,背后藏着哪些不可告人的秘密?...
作为一名 Java开发人员,写 SQL 语句是常有的事,但是你知道 SQL 语句背后的处理逻辑吗?比如下面这条 SQL 语句: select * from user where id=1 执行完这条语 ...
- Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。
SqlServer查询结果写入多个Sheet页 1.引言 2.代码实战 2.1 openpyxl写入excel 2.1.1 安装 2.1.2 代码 2.2 pandas写入excel 2.2.1 安装 ...
- Mybatis 获取当前序列和下一个序列值 以及在一个方法中写多条SQL 语句
目录 1.Mybatis 获取当前序列和下一个序列值 2.Mybatis 在一个方法中写多条SQL 语句 1.Mybatis 获取当前序列和下一个序列值 #获取当前序列值 select XXX_seq ...
- python执行mysql多个sql语句_mysql -- 一次执行多条sql语句
最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...
- mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句
最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...
最新文章
- linux下C++ 插件(plugin)实现技术
- Hudson升级异常及解决办法
- transepose 矩阵的转置
- mysql 分组 字符串_MySQL查询以字符串字段中的数字字符对行进行分组?
- python统计图像直方图_计算机视觉7-像素点直方图统计、掩膜图像
- javascript立即调用的函数表达式
- SQL Sever sa密码丢失
- .NET处理异常--zt
- 树莓派Linux内核编译选项如何开启TPM 2.0
- Docker修炼第一招: 先从Dockerfile开始
- iOS底层探索之LLVM(二)——自定义Clang插件(上)
- opensips日志配置
- 网易云自动化爬虫方案,24小时爬取10万首音乐信息,30万条用户信息,100万个热评
- innerHTML, innerText, outerHTML, outerText的区别
- Unity 5.3 官方VR教程(二) 创建第一个VR项目
- 全局返回json数据简繁体字转换(返回数据里的中文全改成繁体字)
- 详细安装Adobe Dreamweaver教程和制作第一个网页
- 【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信
- 分数加减乘除混合运算带答案_100道题,分数加减法混合运算,要答案
- SVM要点总结(一)
热门文章
- IT销售素质 --善于学习
- 使用 MIDP 底层用户接口 API
- Python 将 HTML 文件转成指定的编码
- 能打开java文件的软件有哪些_使用JAVA打开本地应用程序相关的文件
- mysql数据库什么是事件_[数据库]Mysql 事件(定时任务)
- 使用Dev-C++查看vector数组中的变量值
- Eclipse 安装 Fatjar.jar失败的解决方法
- Spring mvc创建的web项目,如何获知和修改其web的项目访问链接名称?
- 流利说公布上市后首份财报:第三季净收入1.8亿
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.11. 只用索引的扫描