Mysql中的三种log原理

技术主题

在涉及到存储数据的时候,经常用到关系性数据库,mysql是老生之谈了,今天博客的主题就是谈谈mysql的三种log,在日常工作中经常使用到的日志。

技术原理

undolog:是Innodb存储引擎生成的日志,用于事物的回滚和MVCC,保证了事务的原子性
redolog:是Innodb存储引擎生成的日志,用于崩溃后修复数据,保证了事务的持久性
binlog:是Server层的日志,用于备份数据,主从同步

技术原理-细讲一undo log

1)undo log用于回滚数据,在开始执行事务时,MYSQL会把更新前的数据都记录在undolog里面,事务提交前如果MYSQL崩溃,这时候我们可以进行回滚操作回到数据更新前的状态
undo log格式都有一个roll_pointer指针和一个trx_id事务id:
通过trx_id可以知道该记录是被哪个事务修改的
通过roll_pointer指针可以将这些undo log串成一个链表,链表称为版本链
2)在一个事务执行期间,MySQL会将所有的修改操作都写入到undolog中,并且在事务提交之前,这些操作不会被写入到磁盘中。这样可以提高系统的性能,因为如果对数据进行多次修改,只需要在最后一次提交时写入磁盘,而不是每次修改都写入磁盘。
3)当MySQL需要进行数据恢复时,它可以读取undolog中的记录并将数据恢复到先前的状态。因此,undolog是MySQL中非常重要的一个组件,它确保了数据的完整性和一致性。

你可能感兴趣的:(关系型数据库mysql,mysql,数据库,java)