首页 > 数据库 >FAQ:说一说一条更新的SQL语句是怎样执行的?

FAQ:说一说一条更新的SQL语句是怎样执行的?

时间:2022-12-17 20:12:50浏览次数:43  
标签:binlog 说一说 FAQ 写入 更新 SQL 磁盘 日志 redo

1 #原值为'张三'
2 update student set name='李四' where id=1; 

1.客户端发送更新SQL语句,服务器加载数据到缓存中,例如加载名字为张三的记录所在的整页数据。(相当于索引树的一个节点,16KB)

2.写入更新数据的旧值到undo日志文件(回滚日志:是一种逻辑日志,记录的反向操作)中,方便回滚。

3.执行器更新BufferPool缓存池中的内存数据。

4.写入redo日志,将操作结果(这里的日志为物理日志,例如更新哪个地址中的那页数据)写入Redo Log Buffer缓冲区。

5.准备提交事务,redo日志写入磁盘文件中(这里使用的是顺序写,执行效率高)。

6.提交事务,将更新操作写入到binlog日志(需要开启),binlog日志写入磁盘,binlog主要用来恢复数据库磁盘里的数据;

7.写入commit标记到redo日志文件里,提交事务完成,该标记为了保证事务提交后的redo与binlog数据一致。

8.将Buffer Pool缓冲池中修改后的数据随机写入磁盘(这里是随机写,执行效率低),以Page为单位写入,执行完后,磁盘中的name='李四'。

1)如何查看binlog日志是否开启?

1 show variables like '%log_bin%';

注:想要开启/关闭binlog日志,需要在MySQL中的my.ini配置文件中开启。

标签:binlog,说一说,FAQ,写入,更新,SQL,磁盘,日志,redo
From: https://www.cnblogs.com/yangcrazy/p/16989450.html

相关文章

  • mysql零基础-3
    第17章_触发器在实际开发中,我们经常会遇到这样的情况:有2个或者多个相互关联的表,如商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新商品记录的......
  • mysql高级-2
    第11章_数据库的设计规范范式在关系型数据库中,关于数据表设计的基本原则就是,规则就是范式可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一......
  • 在springboot项目集成r2dbc,集成mysql的流式代码DAO层
    我引用的是springboot2.7.0版本。在pom.xml里引入r2dbc的包,和mysql的驱动包:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot......
  • mysql零基础-2
    更新中的数据完整性错误UPDATEemployeesSETdepartment_id=55WHEREdepartment_id=110;删除数据删除一条记录DELETEFROMtable_name[WHERE<condition>];......
  • FAQ:说一说一条查询语句是如何执行的?
    一条SQL语句内部执行流程是怎样的?1select*fromuserwhereid=1;1.客户端发送SQL语句到服务器,先要通过连接器连接到数据库,在完成TCP握手之后,验证用户名和密码。......
  • sql
     Limit分页功能格式1:[NOT]LIMITN, 返回N条记录,前面省略一个参数是默认的第一页格式2:[NOT]LIMITN,M,从第N条记录开始,返回M条记录 LIMIT(curPage-1)*pa......
  • 关于PB用JDBC连接MySQL,亲测有效
        以前自学过一段时间的PB,数据窗口让人印象深刻,前段时间,在西瓜视频看到有人录制了PB的教学视频,让我想起以前自学的那段时光,遇到了问题,也不知道问谁,现在网......
  • Ubuntu20.04离线安装MySQL-5.7.27
    一软件安装先说说为什么选择5.7版本吧,软件的兼容性是最大的问题,其次就是最新的8.0版本规则限制比较多:权限问题,密码复杂度等等...我个人是不喜欢这些条条框框的,而且Ubunt......
  • mysql数据如何恢复到任意时间节点?mysql数据恢复,mysql数据备份
    文章目录​​写在前面​​​​数据备份与恢复​​​​1、全量备份​​​​模拟全量备份与恢复​​​​全量备份的缺点​​​​2、增量备份​​​​模拟增量备份与恢复​​​......
  • MySQL字符集
    查看字符集showcharsetlike'utf8%';每种字符集有多种比较规则,有默认的比较规则。utf8:一个字符最多占用3个字节,默认比较规则是utf8_general_ci。utf8mb4:一个字符最多......