undo log ,redo log 和binlog的区别?

一.MySQL如何保证事务的一致性?

两阶段锁:

prepare阶段:

1.写入redo log (prepare)

2.通知server准备写入binlog

commit阶段:
1.写入binlog

2.提交redo log

二.有了binlog为什么还要记录redo log?

binlog和redo log虽然都是为了数据安全与恢复准备的,但是他们的侧重点和功能有所不同,

bin log记录的是SQL语句,属于逻辑日志,可以在所有存储引擎上运行,主要目标是为了数据备份与复制;

redo log记录的是具体的物理操作,属于物理日志,只能在innoDB引擎上使用,执行速度快,主要目标是为了保证高可用性。

三.典型的事务操作流程?

server接收更新数据请求

innoDB记录undo log

更新BufferPool

记录redo log(prepare)

记录binlog

提交redo log (commit)

四.undo log,redo log和binlog的对比?

undo log:innoDB引擎层,事务开始前的值(旧值),事务回滚,事务开始前;

redo log:InnoDB层,事务提交后数据,宕机恢复,事务执行中;

bin log:server层,SQL语句,主从复制和备份,事务提交时。

五.MySQL数据库结构?

server层:

        连接器

        解析器

        优化器

        执行器

        bin buffer

存储引擎层:

统一接口,

存储引擎:

        内存:

                bufferpool:

                        undo log buffer

                        change buffer

                redo log  buffer

        磁盘:

                undo log

                redo log

                bin log

你可能感兴趣的:(MySQL八股详究,数据库,MySQL,log)