目录
mysql结构脑图
模块详解
connector
提供外部连接包,与mysql进行连接
management services & utilties
负责备份恢复,集群、等其他功能
Mysql Server
- connection pool 用于管理服务端的连接和安全验证
- sql Interface 接收sql语句,返回查询结果
- parser 用于解析sql
- opimizer 用于优化sql
- cache & buffers 缓存数据或者作为临时缓冲池
storage engines
用于数据的具体存储和查询,索引的管理,直接和磁盘交互
filesystem&filesLogs
用于存储各种日志文件,binlog文件等
一条update语句如何执行
我们看到最后一步是执行到存储引擎,存储引擎又是怎么将数据更新的呢
innodb内存区域
首先数据到存储引擎之后,会存入bufferpool,会同时写入dbfile和redolog
redoLog:
buffer-pool将数据同步到logbuffer,然后logbuffer再同步到redoLog,这样避免Bufferpool存入dbfile时产生丢失后无法恢复
之所采用这种双写方式,是因为buffer在写入dbfile时使用了随机io,效率较低 ,因此采用写入redolog的方式,这种方式采用的是顺序io,速度比较快,最大可能避免数据丢失。
undolog:
数据在查询到buffer之后,会对undolog进行同步,记录数据的初始状态,以进行回滚
binlog:
记录提交事务之后的日志
流程: