一条sql语句在MySQL中发生了什么

本文详细介绍了MySQL中的SQL查询与更新语句执行流程,重点讲解了InnoDB引擎的redolog和binlog机制。在查询时,系统会判断用户权限、提取关键字并优化执行。而在更新操作中,涉及两阶段提交,包括redolog记录、预提交、binlog写入,确保数据一致性。若数据不一致或redolog未提交,则事务回滚。redolog用于保证事务的原子性和持久性,binlog则用于数据恢复和备份。
摘要由CSDN通过智能技术生成
sql查询语句:
	判断用户权限 —— 提取sql关键字(Select、from等) —— 优化执行 —— 返回结果  
	
sql更新语句:
	判断用户权限 —— 提取sql关键字(Update等) —— 存储内存 —— 记录redolog并改为预提交状态 —— 写入binlog —— redolog改为提交状态

	注意:只有binlog和redolog记录的数据一致,且redolog为提交状态才彻底修改数据,否则事务回滚(两阶段提交)
		redolog为InnoDB特有的,所以在MySQl中默认使用InnoDB引擎
		别的引擎没有redolog,再binlog已经记录之后再发生故障,事务是不会回滚的


redolog:InnoDB特有的日志,两阶段提交保证数据一致 
binlog:mysql业务日志,每次执行sql更新语句时,他都会把sql语句记录在binlog中,可以根据binlog对数据进行恢复和备份 

更新语句执行流程图:
在这里插入图片描述

一条sql语句在MySQL中发生了什么
https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485097&idx=1&sn=84c89da477b1338bdf3e9fcd65514ac1&chksm=cea24962f9d5c074d8d3ff1ab04ee8f0d6486e3d015cfd783503685986485c11738ccb542ba7&token=79317275&lang=zh_CN#rd
redolog和binlog
https://www.jb51.net/article/236305.htm
Java优质文档
https://snailclimb.gitee.io/javaguide-interview/#/./docs/d-1-mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值