文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【体系结构】一条SQL语句经历了什么

2024-04-02 19:55

关注

我们都知道 Oracle 是通过 SQL 语句来查询或者进行修改的。那么 SQL 从客户端执行开始,经历了哪些进程?哪些 SGA ?是怎么进入到数据文件的呢?请往下看

情况一:在数据库中查询 select

【体系结构】一条SQL语句经历了什么

如图所示:

① 客户端输入 SQL,SQL 语句通过网络到达数据库实例,前台进程(服务器进程)接受 SQL 语句, PGA 这时会分配一段空间给前台进程。

② 将 SQL 语句解析为“执行计划”,然后才能执行

解析这部分消耗很多资源: CPU 和 I/O 。

此时 SQL 语句和执行计划都会被缓存在共享池 (shared pool) 中

③ 通过生成的执行计划在数据库缓冲区( buffer cache )和 dbf 文件中找数据

此过程会涉及数据库缓冲区,数据库缓冲区的作用就是缓存 dbf 的数据。所以是首先从数据库缓冲区看是否有数据,有的话就从数据库缓冲区中获取,如果没有就从 dbf 文件中获取。 dbf 中的数据首先会传到数据库缓冲区中。然后在通过前台进程将数据返回客户端。

① ② ③过程都是有前台进程完成


情况二:修改某个表的数据

【体系结构】一条SQL语句经历了什么

①  同查询一样,客户端将要求前台进程传输到共享池中,然后到数据库缓冲区读数据。如果数据库缓冲区中没有数据,那么就从 dbf 文件中找, dbf 中的数据会传送到数据库缓冲区,由前台进程进行读取。

②  前台进程在数据库缓冲区中对表进行修改,提交,此时,会产生日志。产生的日志会写到日志缓冲区中。

③  在数据库缓冲区中修改完数据后,此时内存中的数据和数据文件中的数据不一致。需要将内存中的数据写到数据文件中。这个过程由数据库写进程来完成。

④  内存中日志缓冲区产生的日志需要写到日志文件中,这个过程由日志写进程完成。




------------- end ---------------


 

 


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯