目录
redolog
可以实现数据库事务的持久性
bufferpool和page
page
页是数据库innodb引擎存储在磁盘中的最小单位,一个page页大概有16KB,主要存储了数据库的行数据。
bufferpool
是主内存的一个空间,专门为数据库的增删改开辟使用的空间,会用于存储增删改的数据(如果在读取数据时,先读取bufferpool的缓存区,如果数据没有再从磁盘中加载)bufferpool的数据会以一定的时间频率来刷盘到磁盘空间,进行数据的持久化,从而减少磁盘IO,提升效率
数据库持久化的流程图如下:
从图上看是有一个问题需要解决的,由于服务器宕机造成刷盘失败的话,内存的脏数据就无法同步到写入的磁盘,所以为了应对这种情况的发生,数据库因为了redolog日志问题
redolog日志有两部分:redologbuffer和redologfile,redologbuffer存储bufferpool内存在,而redologfile存储在磁盘中,数据进行刷盘中,先持久化redologbuffer到redlogfile中,先写日志在刷盘数据,这样当服务器宕机重启以后,可以通过事先存储的redofile(WAL)来完成继续完成数据的刷盘。
性能问题
由于redolog日志是追加顺序写的,比page页面随机磁盘IO写入速度要快很多,所以性能也会提高很多。流程图如下:
undolog
可以实现数据库事务的一致性和原子性
回滚日志,主要记录数据修改前的信息,undolog是实现回滚和MVCC的主要依据,和redolog记录数据的物理日志不同,redolog记录的是数据的逻辑日志
可以认为,当执行一条delete操作,redolog就是记录一条insert操作即相反操作。