问题

详细描述用户连接数据库,执行update语句commit结束后,数据库内部的运行流程。

答案

commit操作

检查点机队列中相关数据块的提交状态修改为已提交
释放持有的锁资源
返回给用户进程提交完成的信息

Buffer Cache & DBWR
Buffer Cache其实就是磁盘数据文件的缓存,以修改块的操作为例,如update,只是修改Buffer Cache中的Buffer,修改完成后,update操作就算完工了。这样Buffer和磁盘中的Block就不一致了,Buffer中有用户最新修改的数据,这些数据还没有写入磁盘。这样的Buffer就是脏Buffer(也可称脏块)。脏块由DBWR进程统一写磁盘,脏块写入磁盘后就不是脏块了,所以DBWR写脏块这个过程,也叫刷新脏块

CKPT & DBWn & LGWR

CKPT会触发数据库写进程(DBWn),通知DBWn将当前检查点队列中已标记为提交状态的数据块从缓存高速缓冲区读出并写入到数据文件中(database buffer cache -> datafiles),DBWn在执行前会首先触发一次日志写,确保写入数据文件的提交过的数据块所对应的的重做条目都已持久化在联机重做日志文件中(redo log buffer -> online redo log files)
在DBWn把检查点队列记录的所有已提交的数据块全部成功写入数据文件后,CKPT会用控制文件头记录SCN把数据库全部的数据文件头的SCN字段值刷新一遍,刷新完成后,每个数据文件头的的SCN字段值和控制文件保持一致(一致性数据库的标志)。

原理大图
解析Redo数据流
详细解析update语句的过程

当update语句提交后,数据库做了哪些操作?相关推荐

  1. oracle update语句提交,Oracle UPDATE语句使用示例

    本文概述 在Oracle中, UPDATE语句用于更新表中的现有记录.你可以通过两种方式更新表. 传统更新表方法 句法: UPDATE table SET column1 = expression1, ...

  2. Git 错误提交后该如何回滚操作

    1. Git 架构 Workspace:工作区(当前用户操作修改的区域) Index / Stage:暂存区 (add 后的区域) Repository:仓库区或本地仓库(commit 后的区域) R ...

  3. 关于Update语句在不同数据库中的差别

    Oralce和DB2都支持的语法: UPDATE A   SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) MS SQL ...

  4. php update语句,php中update语句用法介绍

    php中update语句用法介绍 发布时间:2020-06-12 16:40:44 来源:亿速云 阅读:175 作者:小新 本篇文章和大家了解一下php中update语句用法介绍.有一定的参考价值,有 ...

  5. mybatis中update语句使用selectKey返回更新的主键

    想法:更新某条符合条件的记录的状态status为1,并且返回这条记录的id.如果没有符合条件的记录,就返回0. update语句默认返回的是影响到的记录数,用selectKey可以返回指定属性值到 传 ...

  6. oracle中闪回概念,Oracle数据库的闪回操作

    通过DELETE删除数据后相当于放入回收站,一般情况下可以找回:通过UPDATE更新数据后数据库也会保留数据快照.闪回就是恢复指定时间的数据快照以达到恢复数据的目的. 根据步骤一查询出数据快照,恢复数 ...

  7. 关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题

    最近碰到一个奇怪的问题,使用Access数据库执行Update语句后,不报错,但影响行数总是返回0. 因为是第一次碰到这个问题,纠结了半天.后来在网上搜索得到解决方案: SQL语句传参数的顺序和语句中 ...

  8. 数据库中Select For update语句的解析

    ----------- Oracle -----------------– Oracle 的for update行锁 键字: oracle 的for update行锁 SELECT-FOR UPDAT ...

  9. 表单如何提交后mysql_如何在表格中添加表单,并提交MYSQL数据库

    本人是个新手,现在想做个指标提交系统,MYSQL数据库中已经有销售整体架构,并已经在PHP中按照登陆账号自动生成对应的销售下属人员,但是架构后面跟着销售的指标,想做个输入框,并提交到数据库中,请问怎么 ...

  10. mysql insert和update_详解MySQL数据库insert和update语句

    用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句.SQL语句中的更新语句update是最常用的语句之一,言外之意,就是对数 ...

最新文章

  1. 公司虚拟化平台VMware vCenter Server无法连接故障排查解决
  2. js正则--验证6-12位至少包含数字、小写字母和大些字母中至少两种字符,
  3. springMVC 不扫描 controller 中的方法
  4. VTK:Filtering之ProgrammableFilter
  5. 简单的动画函数封装(2)
  6. mac os 显示文件列表命令 ls -a
  7. (八)Locust 设置断言
  8. C# 错误 175: 具有固定名称“System.Data.SQLite.EF6”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载
  9. 那个分分钟处理 10 亿节点图计算的 Plato,现在怎么样了?
  10. 都在这儿了!5月 Flink 社区发版、更新汇总
  11. Hero In Maze
  12. html5的图片上传插件,分享5个好用的javascript文件上传插件
  13. java设计模式笔记
  14. 网络安全认证与加密协议算法整合
  15. RTSP协议视频安防综合管理平台EasyNVR与海康萤石云平台运行机制差异对比说明
  16. 心情札记 --- 人活着是为了天天开心快乐, 去憧憬和实现一切美好的事物
  17. @Lazy的使用 懒加载
  18. c语言列指针的形式,C语言:行指针和列指针
  19. 凸多边形的最优三角划分
  20. 飞思卡尔 MC9S12XEP100 bootloader CAN

热门文章

  1. 用ROS来做无人测试平台系列之国外的一些RACECAR
  2. 【Vue实用功能】Vue监听浏览器刷新和关闭事件
  3. 计算机管理工具怎么设置,电脑音频管理器怎么设置,教你电脑音频管理器怎么设置...
  4. Pr入门系列之十:添加视频效果
  5. pkg将项目打包成 exe应用, 双击启动 node
  6. 基于HTML5之APP购物车实现
  7. charles+https+安卓7.0+夜神模拟器,解决安卓7.0+版本https无法抓包问题
  8. VNC远程桌面安装配置
  9. Rust 智能指针(二)
  10. HTML+CSS学习笔记