mysql 整理之mysql INNODB的事务和日志

5.1redo undo

Redo用于前滚 undo用于回滚和一致性读

redo:在页修改的时候,先写到redo log buffer 里面,然后写到redo log 的文件系统缓存里面(fwrite),然后再同步到磁盘文件(fsync)。 每当有操作执行前,将数据真正更改时,先前相关操作写入重做日志。这样当断电,或者一些意外,导致后续任务无法完成时,系统恢复后,可以继续完成这些更改

Undo:在MySQL5.5之前,undo只能存放在ibdata*文件里面,5.6之后,可以通过设置innodb_undo_tablespaces参数把undo log存放在ibdata*之外。当一些更改在执行一半时,发生意外,而无法完成,则可以根据撤消日志恢复到更改之前的壮态。

5.2事务时如何通过日志来实现的

因为事务在修改页时,要先记undo,在记undo之前要记undo的redo,然后修改数据页,再记数据页修改的redo。Redo(里面包括undo的修改)一定要比数据页先持久化到磁盘。当事务需要回滚时,因为有undo,可以把数据页回滚到前镜像的状态,崩溃恢复时,如果redo log中事务没有对应的commit记录,那么需要用undo把该事务的修改回滚到事务开始之前。如果有commit记录,就用redo前滚到该事务完成时并提交掉。

5.3     mysql binlog的几种日志录入格式以及区别

(1) 各种日志格式的涵义

Statement/row模式,mixed模式是二者的结合

(2) 适用场景

 

在一条SQL操作了多行数据时,statement更节省空间,row更占用空间。但是row模式更可靠。

(3)结合第一个问题,每一种日志格式在复制中的优劣。

Statement可能占用空间会相对小一些,传送到slave的时间可能也短,但是没有row模式的可靠。Row模式在操作多行数据时更占用空间,但是可靠。

 

5.4     inndob四种事务的隔离级别都是什么

四种隔离级别:

readuncommitted  未提交读

readcommitted          读取已提交

repeatableread          可重读

serializable  串行化读

不同级别的现象:

脏读:一个事务可以读取到另一个事务尚未提交的数据

不可重复读:两个事务读取同一条记录,两次读取的结果不一样

幻读:在一个事务中,由于其他插入操作事务的提交,导致返回了以前不存在的记录

不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL InnoDB引擎是MySQL数据库的一种存储引擎,它采用了多版本并发控制(MVCC)机制来保证数据的一致性和并发性能。 InnoDB架构的核心组件包括缓冲池、日志缓冲、重做日志、系统表空间和数据文件。 缓冲池是InnoDB中最重要的组件,用于缓存数据和索引页。它预先读取热点数据到内存中,加快查询速度。同时,缓冲池还使用了LRU算法来管理内存页,使得经常被访问的页能够一直保留在内存中,减少IO操作。 日志缓冲用于临时存储已经提交的事务日志,以提高写操作的性能。它将数据改变操作记录为日志,并在事务提交时将这些操作应用到数据文件中。这种设计可以保证事务的持久性和恢复性。 重做日志InnoDB实现事务的关键部分。它记录了数据库的所有变动,包括插入、更新和删除操作。它的作用是在需要恢复数据库状态时,通过“重做”操作应用到数据文件中。 系统表空间存储了InnoDB的元数据,包括表定义、索引、MVCC信息等。每个InnoDB表都有一个对应的表空间,用于存储此表的数据和索引。 数据文件是InnoDB存储数据和索引的主要文件,用来持久性地存储数据。它们以页为单位进行管理,每个页一般为16KB大小。 InnoDB架构还支持行级锁和MVCC机制,使得多个事务可以并发地访问数据。行级锁能够降低事务之间的冲突,从而提高并发性能。而MVCC机制则通过保存数据版本信息,可以支持读已提交、可重复读和串行化等不同的事务隔离级别。 综上所述,InnoDB架构是MySQL中一种重要的存储引擎,它通过缓冲池、日志缓冲、重做日志和系统表空间等组件实现了高性能、高并发的特性。同时,它也支持行级锁和MVCC机制,提供了灵活的事务隔离级别,使得数据一致性和并发性能得到保证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值