mysql的执行流程

驱动通过和mysql的连接池来获得连接

我们可以设置连接池的最大连接数量,接收报文的最大长度

指令优化后传给存储引擎。

innodb只操作内存。

innodb实现了自己的缓存机制

innodb使用自己的缓存机制,称为缓冲池(Buffer Pool),而不是直接依赖操作系统的页缓存。

redolog的刷盘策略可以设置。

日志

日志主要为了解决数据库的非原子性导致的不一致问题:提交了事务但是没有刷盘就崩溃了,没提交事务但是已经刷盘了

在数据库中通常使用的日志有两种:commit-log,write-ahead-log。

commit-log,在数据库刷盘之前刷盘。

write-ahead-log,为了能够让写入commit-log之前刷盘数据库,需要先写入write-ahead-log。

在mysql中redolog就是commit-log,而undo-log是write-ahead-log。

执行流程如下:

redolog和undolog是驱动内部的,只可以binlog

程序员只能修改redolog和redolog执行的策略,而无法使用日志进行恢复。

程序员可以使用的日志是binlog日志。

binlog可以历史回退,数据库备份恢复,主从复制。binlog不是存储引擎的部分,是mysql的另一模块。

在redolog刷盘时会同时binlog的刷盘。在binlog完成之后会给redolog写入commmit。

mysql的执行流程

查询缓存不常用,而且在8.0之后已经被删除了,性能损失较大。

sql解析器:语法分析,词法分析,构建语法树

预处理器:先提交sql模板(prepareStatement的作用),再提交参数进行执行。

sql优化:基于成本的执行路径选择, 通过定义的优化规则实现优化。

执行器:生成执行计划,sql优化器将执行计划发送给执行器,执行器调用存储引擎的接口将执行计划发送给存储引擎。

索引查询,遍历查询,构建临时表。

innodb写入独立表空间,系统表空间,undo表空间,redolog表空间

所有使用InnoDB存储引擎的表都共享相同的Undo Log和Redo Log。

相关推荐
小马爱打代码4 小时前
Redis 集群方案详解:主从复制、哨兵、脑裂、分片集群和哈希槽
数据库·redis·哈希算法
海南java第二人5 小时前
ClickHouse 稀疏索引深度解析:为什么 OLAP 数据库不用 B-Tree?
数据库·clickhouse
Litluecat5 小时前
信创迁移:Oracle切换海量数据库,慢sql扫描
数据库·sql·oracle·信创·海量
消失在人海中6 小时前
Oracle的CURRENT REDO丢失,数据丢失风险分析
数据库·oracle
喵了几个咪6 小时前
选择第三方IAM还是自建权限体系?中小型后台系统权限架构决策指南
数据库·oracle·架构
Elastic 中国社区官方博客7 小时前
Kibana:使用 AI Chat 及 MCP 轻松创建 AI 原生仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·信息可视化
杨云龙UP8 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
Database_Cool_8 小时前
Hudi 湖仓一体架构:阿里云 AnalyticDB MySQL 原生集成最佳实践
数据库·mysql·阿里云
我是一颗柠檬8 小时前
【Redis】发布订阅与消息队列Day8(2026年)
数据库·redis·后端·缓存