MYSQL的执行过程和日志介绍

本文详细解析了SQL在MySQL中的执行流程,从连接建立到查询缓存,再到分析器、优化器和执行器的工作原理。同时,深入探讨了MySQL的两大日志redolog与binlog的作用与区别,以及数据更新的具体过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql的执行过程

第一步:客户端或者系统通过sql connection连接上MySQL数据库的连接器,连接器获取权限,维持管理连接;

第二步:当你往MySQL数据库发送一条sql,这个时候查询缓存开始工作,看看之前有没有执行过这个sql,如果有则直接返回缓存数据到客户端,只有对表执行过更新操作缓存都会失效,因此一些很少跟新的数据表可以考虑使用数据库缓存,对频繁跟新的表使用缓存反而弊大于利。使用缓存的方法如下sql:

select SQL_CACHE * from USER

第三步:当未命中缓存的时候,分析器开始工作;分析器判断你是select还是update还是insert,分析你的语法是否正确。

第四步:优化器根据你的表的索引和sql语句决定使用那个索引,决定join的顺序。

第五步:执行器执行sql,调用存储引擎的接口,扫描遍历表或者插入跟新数据。

mysql的日志

mysql的日志介绍:MySQL有两个重要的日志–redolog和binlog,redolog是独属于innodb的日志,binlog则是属于server层的日志。当我们跟新数据库的数据的时候,这两个日志文件也会被跟新,记录数据库的跟新操作。

redolog有称作重做日志,用于记录实务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。它在数据库重启恢复的时候被使用,innodb利用这个日志恢复到数据库宕机前的状态,一次来保证数据的完整性。redolog是物理日志,记录的是某个表的数据做了那些修改,redolog是固定的大小的,也就是说后面的日志会覆盖前面的日志。

binlog有称作归档日志,他记录了对MySQL的数据库执行更该的所有操作,但是不包括select和show这类操作。binlog是逻辑日志,记录的是某个表执行了那些操作。binlog是追加形式的写入日志,后面的日志不会被前面的日志覆盖。

数据跟新过程

读取对应的数据到内存—>更新数据—>写redolog日志—>redolog状态为prepare—>写binlog日志—>提交事务—>redolog状态为commit,数据正式写入日志文件。redolog的提交方式为“两阶段式提交”,这样的目的是为了数据恢复的时候确保数据恢复的准确性,因为数据恢复是通过备份的binlog来完成的,所以要确保redolog和要binlog一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值