MySql
2021-11-01 12:43:33 0 举报
Mysql 源码分析
作者其他创作
大纲/内容
7.将binlog更新的文件名和更新文件的位置写入redo,并在redo log添加commit标记
连接
Mysql服务器
解析sql
线程
查询优化器
SQL接口
描述数据
缓存数据
4. 写redo日志
binlog
数据库连接池
调用存储引擎执行sql
磁盘文件
执行sql语句
LRU链表
Buffer pool
执行sql
最优查询路径
提交事务redo日志是否强制刷入磁盘由参数innodb_flush_log_at_trx_commit=1 强制写入磁盘,2写入os cache缓存,1秒后再写入磁盘
执行器
为什么有redo日志还要有binlog日志,因为redo日志属于存储引擎,binlog属于mysql
buffer pool缓冲池
执行计划
Free链表记录未使用的数据页Flush记录已经更新数据页(脏页,作数据回写磁盘使用)LRU链表记录使用的数据页LRU优化策略:1.冷热分离:在1秒后未继续访问的放入冷链表头,防止预热数据到链表头Buffer Pool分配的内存小于1GB,那么最多就只会给你一个Buffer Pool
SQL解析器
IO线程
2. 将未修改的数据写入undo日志便于回滚
Free链表
binlog磁盘文件
Flush链表
Redo LogBuffer(记录对哪个数据做了修改)
8.将内存buffer pool数据刷入磁盘
redo磁盘文件
请求
3. 更新缓存数据
存储引擎 innodb
6. 准备提交事务 binlog日志写入磁盘
1.加载数据到缓存池
5. 准备提交事务redo日志写入磁盘
Tomcat
0 条评论
回复 删除
下一页