MySQL是如何恢复到某一天的某一秒的状态?

本文详细介绍了MySQL处理SQL语句的过程,包括连接器、查询缓存、分析器、优化器和执行器的角色。重点讨论了写操作,涉及到redo log和binlog的作用,以及如何将MySQL恢复到特定时间点的状态。此外,解释了两阶段提交的原因,确保在异常情况下数据一致性。
摘要由CSDN通过智能技术生成

1、一条 SQL 语句提交到数据库之后,数据库都会执行哪些动作?

2、MySQL 是如何恢复到某一天的某一秒的状态?

先看下一条读操作 SQL 的查询过程:

连接器

客户端在提交 SQL 语句之前,你需要先连接上数据库,也就是说要提供用户名密码登陆,这便是连接器发挥作用的时候。

连接上去后,MySQL 就创建了一个连接对象放在了内存中,连接对象里有用户的相关权限信息,此时如果管理员修改了用户权限,只要用户不退出重新连接,就不会被影响。

内存资源是比较昂贵的,不用的话就要被清理。如果不做任何操作,在一定的时间之后(默认是 8 小时),连接器会自动断开,此时再查询就会报错。

一个比较好的方案是使用数据库连接池。Python 编程可以使用第三方库 DBUtils 来管理数据库连接池。

查询缓存

缓存可以快速返回命中的查询,在使用上的感受就是同一个 SQL,第二次查询时结果是立刻显示的。查询缓存中以 SQL 语句作为 KEY,查询结果作为 VALUE。

如果你的查询能够直接在这个缓存中找到 key,并且具有对该表的相应的权限,那么这个 value 就会被直接返回给客户端。

如果没有找到,会走接下来流程,一旦查到结果,结果还是会保存在查询缓存中。

分析器

如果没有命中查询缓存,SQL 语句就会传给分析器进行词法分析,分析是否有语法错误,解析中表名,字段名等等,其实不仅仅数据库有分析器,很多开源的工具也有分析 SQL 的功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值