mysql 底层引擎_mysql底层简述
1)Redo日志
基于innoDB引擎
redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或者某几行的修改,用来恢复提交后的物理数据页。
redo log使用WAL(write ahe
Mysql 日志系统 1)Redo日志 基于innoDB引擎 redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或者某几行的修改,用来恢复提交后的物理数据页。 redo log使用WAL(write ahead logging)技术,每次提交事务后mysql内核,都会讲存储引擎中的log buffer中的日志写入内核中的OS buffer中,再从OS Buffer写到磁盘的redo log file中。 redo log有三种写入方式: 0)redo log每秒钟写入OS buffer中,再持久化到磁盘。 1)redo log在每次事务提交后,写入os buffer,在从os buffer写入磁盘。 2)redo log在每次事务提交后,写入os buffer,每秒钟从os buffer写入磁盘。 由 innodb_flush_log_at_trx_commit 参数控制。 innodb 的 redo log 有固定大小,write pos 记录当前写入的位置,check point指向当前擦除的位置 2)binlog 逻辑日志,server 端日志 通过和redo log合作,通过两段式提交和保证日志和数据的一致性。 redo log prepare-> 写binlog-> redo log commit 3)undo log undo log是为了实现事务的原子性,在innoDB中还使用undo log实现MVCC 在操作任何数据之前,先将数据备份到一个地方(undo log),然后进行数据的修改。如果出现错误或者用户调用了ROLLBACK语句,系统可以使用undo log将数据恢复到事务开始前的状态。 undo log是逻辑日志,可以理解为生成增删改操作对应相反的一条语句。 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |