一. mysql的日志
在mysql中会有很多日志,mysql利用WAL技术,"write ahead logging"就是先写日志在写入磁盘。这样的好处当mysql负载过高的时候避免频繁的IO操作占用过多资源,导致mysql性能下降。WAL技术可以在mysql空闲的时候再将日志中的数据写入磁盘。
接下来我们先来了解一下在mysql中的两个重要的日志redo log和binlog。
1.1 mysql底层架构
我们知道mysql分为server层和存储引擎层。
server层是我们常见的连接器,分析器,优化器,执行器。 我画了一个图方便理解
这里搬出来mysql45讲里面的非常好的又形象的图:
存储引擎层里会有很多存储引擎,比如MYISAM,INNODB,MEMORY等,这些存储引擎会提供一个读写的接口,然后我们在server层的执行器可以通过调用这个接口对数据进行读写操作。
1.2 redo log 重做日志
redo log叫做“重做日志”。是一种物理日志。是INNODB引擎特有的日志,拥有crash safe的能力,Mysql由于意外重启,保障之前提交的记录不会丢失。redo log是有大小限制的最大不能超过4GB。