服务器接收到SQL语句之后,要经过如下步骤完成操作:Parse(解析)—> Bind(绑定)—> Execute(执行)。

画个流程图比较明显的表示了这些过程:

下面说明执行的具体细节:

1 Select(查询)

2 INSERT/DELETE/UPDATE

这些都是对数据进行修改的语句,画个流程图,简洁明了:

这个叙述比较混乱,举个例子:

有这样一行,学生id是100,成绩是99,现在要将这个成绩改成80(这个ID对应的行,有且仅有一行)。

SQL应该是update student set score=80 where stu_id = 100;

假设这个数据块已经在buffer cache里了,那么就要首先取得两个锁:表的数据行独占锁和数据行独占锁。下面,就要把记录为99的数据Redo Entry复制到log buffer。然后,会产生undo block,大概是这样的(100,99)。这之后,会把修改的Redo Entry也复制到log buffer里去,这个是80的。所有这些做完以后,成绩会被从99更新到80。

这一切之后,输入commit。

这时数据库会做这些事情:

1 会把commit的Redo Entry复制到Log Buffer里,这样的话,按照时间顺序,Log Buffer里就有了如下三组:(100,99),(100,80),commit。

2 启动LGWR。按照上面的顺序把Log Buffer写到Online Logfile里。

3 告诉用户进程,结束了。

很长时间以来,我都以为commit以后,数据会被写到数据文件里,就是Datafile,但是事实不是这样。上面的步骤完成之后Datafile里存在的还是(100,99)。下次再查询的时候,就直接查缓冲区数据了。如果缓冲区紧张了,DBWR会开始工作,将缓冲刷进数据文件

转载于:https://blog.51cto.com/feirr/1384744

SQL语句的执行过程相关推荐

  1. 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程

    MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...

  2. oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)

    第1章 SQL语句处理的过程 在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句. 本节介绍了SQL语句处理的基本过程,主要包括: · 查询语句处理 · DML语 ...

  3. MySQL总结(四)——MySQL中sql语句的执行过程

    MySQL 基本架构 连接器: 身份认证和权限相关(登录 MySQL 的时候). 查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用). 分析器: 没有 ...

  4. oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程

    一般来说,数据库处理SQL都会经过三个过程:解析(parse).执行(exec).返回结果(fetch) 1.解析 当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL ...

  5. sql语句的执行过程和优化

    一.执行过程 二.优化 1.select查询优化 (1)保证不查询多余的列与行,应尽量避免全表扫描 尽量避免select * 的存在,使用具体的列代替*,避免多余的列. 使用where限定具体要查询的 ...

  6. mysql pdo 获取最后一条sql_一条sql语句的执行过程-mysql

    平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10: ...

  7. mysql三高讲解(一):1.2 一个sql语句的执行过程

    查询缓存: 之前执行过的语句会以KV的形式缓存在内存中.查询先前查找过的内容会快速的返回结果. 不推荐使用缓存:因为数据表修改后,会删除所有相关缓存. 分析器: 优化器: 执行器: 存储引擎:Inno ...

  8. 逻辑io 物理io oracle,Oracle体系结构之SQL语句的执行过程

    命中率: 命中率在Oracle数据库的多个地方都会被提起 例如当一个进程需要访问数据时,首先确定数据是否存在Buffer Cache中,如果存在(称为高速缓存命中),则直接读取数据(逻辑IO/内存读) ...

  9. 一条SQL语句的执行过程

    一:思维导图

最新文章

  1. Java 洛谷 P2089 烤鸡
  2. Jquery中怎样判断是否有网络
  3. 微软修复Windows 10周年更新KB3194496累积更新安装问题
  4. MatConvnet工具箱文档翻译理解(4)
  5. Cloudstack安装(二)
  6. pandas根据索引删除dataframe列
  7. 散列函数之双重散列算法解决冲突问题
  8. python linux教程_Linux for Python教程01
  9. 【OpenCV学习笔记】【函数学习】十一(读入图像﹑显示图像和保存图像)
  10. 一张图读懂“云栖大会·武汉峰会”发布的阿里云AI产品体系
  11. 体验Windows server 2012上安装SQL 2012
  12. 小米手机修改imei教程_小米手机imei码和s/n码以及测试调试界面唤起代码
  13. 某个蝰蛇音效的卡刷包代码分析
  14. 5W1h分析法分析---play框架
  15. 重磅!Windows XP源代码泄露
  16. html中文字怎么自动排版,CSS网页布局中文字排版九大技巧
  17. Pandas数据分析与处理补充习题
  18. 【校园快递信息系统——开题报告 分享(仅供参考呀)】
  19. 人脸识别-批量裁剪图像
  20. 开源正弦波20kHz信号发生器 V2

热门文章

  1. Selenium最全超时等待问题的处理方案
  2. CM005-逆向分析过程(上篇)
  3. 微软宣布Azure Function支持Python
  4. 将DataTable中的数据一次性提交到数据库中
  5. python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制
  6. 共利、共济、共赢 铸就黔南大数据时代丰碑
  7. BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
  8. 门户网站负载均衡技术的六大新挑战
  9. 如何给一个二维数组动态分配内存
  10. 推荐系列:2008年第03期 总5期