首页 > 数据库 >日志系统:一条SQL更新语句执行过程

日志系统:一条SQL更新语句执行过程

时间:2023-03-01 12:03:24浏览次数:34  
标签:语句 记录 redolog 更新 SQL 日志 ID

更新流程

image
假如有个表和一条更新语句

mysql> create table T(ID int primary key, c int);
mysql> update T set c=c+1 where ID=2;

更新语句会走一遍查询语句的流程,分析器会通过词法和语法解析知道这是一条更新语句,优化器决定使用ID索引,执行器负责执行,找到这一行然后更新。

日志系统

更新流程涉及两个日志模块:redologbinlog

redolog

WAL技术:Write-Ahead Logging,先写日志,再写磁盘。

redolog使用了WAL:当有一条记录需要更新的时候,InnoDB引擎会先把记录写到redolog,并更新内存,此时更新就算完成。InnoDB 引擎会在适当的时候(系统相对空闲、redolog写满等),将这个操作记录更新到磁盘里面。

redolog循环写的方式,write pos是当前记录的位置,一边写一边后移。checkpoint是当前要擦除的位置,也是后移循环,擦除前要把记录更新到数据文件。write pos 和 checkpoint 之间的是“粉板”上还空着的部分,可以用来记录新的操作,如果没有,会强制redolog刷盘。

InnoDB可以通过redolog保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe。

binlog

标签:语句,记录,redolog,更新,SQL,日志,ID
From: https://www.cnblogs.com/kiper/p/17166465.html

相关文章

  • sql ytd 附python 实现方式
    ytd释义YTD分析属于同比分析类,其特点在于对比汇总值,即从年初第一日值一直至今的值累加。作用在于分析企业中长期的经营绩效。做法假定:有一张销量明细表date仓库s......
  • mysql中使用 when then 格式化查询结果
    mysql>select*fromuser;+----+------+------+|id|name|sex|+----+------+------+|1|张三|1||2|李四|1||3|张珊|0|+----......
  • Mysql获取时间戳的一些处理
    前情提要:老板需要一个统计今日新增用户的功能我的想法是统计24小时内新增用户的功能直接去问AI我明确指出了时间戳但是AI给出的答案却差了口气这就是老板给我工资......
  • SQL 多表关联更新语句
    A表WHERE条件来自B表查询结果集UPDATEaSETa.is_sync=0FROMA表aLEFTJOINB表bONa.order_id=b.order_idANDa.line_no=b.order_line_no......
  • pgsql中pg_dump显示:因为服务器版本不匹配而终止
    1、输入pg_dump命令后,显示“因为服务器版本不匹配而终止”。如图所示:  2、因为pgsql安装的版本为11.6,而pg_dump的版本成为了9.2,故无法备份。3、找到pg_dump的位置。......
  • Database-SQL
                                                        ......
  • Mysql常见的数据表类型
    明细表明细表/详情表比较常用。一般会有一张带有id的主表,比如tt_order,主键为id,字段比较少。明细表/详情表tt_order_detail,存放了大量的明细字段,有一个字段order_i......
  • sql优化方法
    1.避免使用select*2.小表驱动大表(in前面大表,后面小表;exists前面小表,后面大表)3.连接查询代替子查询4.join的表不宜过多(根据阿里巴巴规范,join的表数量不应超过3个)5.选......
  • MySQL的RR和RC事务隔离级别加锁类型验证
    先上结轮:MySQL5.7数据库Innodb引擎在默认的REPEATABLE-READ(RR)事务隔离级别时,事务更新操作对于where条件锁定的范围加的是Next-KeyLock即临键间隙锁,对于确切条件......
  • mysql字符串等值查询中条件字段值末尾有空格也能查到数据问题
    一、事故还原我们仍然使用学生信息表,但是我们只需要保留两个字段即可:CREATETABLE`student_info`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`name......