【Mysql】日志
2022-07-26 10:07:31 0 举报
日志系统工作流程
作者其他创作
大纲/内容
check point
3.将修改的结果更新到内存
redo log buffer
innodb 存储引擎
等于0
redo log file
获取数据
内存
Commit 每次提交时写入OS Buffer
undo log buffer
User Space
客户端
Log Files
将数据更新到内存
DML
log buffer
undo log file
4.记录data page变更的日志同时将记录的的状态置为prepare状态
OS Buffer
ib_logfile_1
OS buffer
写入redo log处于prepare状态
Log Buffer
2.将数据修改
执行流程:1.执行器先从引擎中找数据,如果在内存中直接返回,如果不存在,从磁盘读取2.执行器拿到数据后,先修改数据,然后调用引擎接口写入数据3.引擎将数据更新到内存,并写数据到redo log中,此时处于prepare状态,并通知执行器执行已经完成,随时可以进行操作4.执行器生成这个操作的binlog5.执行器调用引擎的事务提交接口,引擎把刚刚提交的redo log改成commit状态,更新完成6.进行日志刷盘操作
提交事务处于commit状态
7.将redo log的状态置为commit状态
存储引擎
Buffer Pool
fsync()
返回数据
等于1才能保证事务的持久性
innodb_flush_log_at_trx_commit参数决定redo log buffer写入redo log file的时机
磁盘
数据写入过程
否
Commit
buffer pool
5.准备完成可以开始提交事务
等于2
修改数据
ib_logfile_0
写入bin log
两阶段提交【保证bin和redo日志一致】
Kernel Space
数据是否存在内存中
1.DML
server
每秒调用fsync()刷到磁盘
紫色表示在存储引擎中执行黄色表示在执行器中执行
将磁盘数据读入内存
write pos
写入新数据
6.commit transaction
0 条评论
下一页