看这篇就够了Mysql事务提交是怎么

北京雀斑专科医院 http://pf.39.net/bdfyy/dbfzl/211210/10057623.html

Mysql是事务提交是怎么保证性能和安全性地写进磁盘的?答案当然是著名的WAL机制了,这里我们的介绍下Mysql的这种机制实现和对应参数配置!

Binlog日志

binlog的写入逻辑:事务执行过程中,先把日志写到binlogcache,事务提交的时候,再把binlogcache写到binlog文件中。

也就是可以分为先写到binlogcache缓存中,直接写内存就很快了,性能问题可以解决。mysql解决磁盘数据持久化的方案是根据参数sync_binlog配置的值来解决同步或者异步持久化。

1.sync_binlog=0的时候,表示每次提交事务都只write,不fsync;2.sync_binlog=1的时候,表示每次提交事务都会执行fsync;3.sync_binlog=N(N1)的时候,表示每次提交事务都write,但累积N个事务后才fsync。

Redolog日志

Binlog是mysql的server层的日志,也可以说是mysql自己的日志。但是作为小三转正的Innodb外来者,也会带有自己的日志来补充Binlog的不足,这就是Redolog和Undolog。Redolog存的是业务逻辑,用于事务执行过程中异常崩溃恢复。

原理都一样,要想性能高,就得先写到cache中,Redolog会被先写到redologbuffer中,后面根据参数配置值来持久化到磁盘里。

redolog的写入策略,InnoDB提供了innodb_flush_log_at_trx_


转载请注明:http://www.aierlanlan.com/grrz/5431.html

  • 上一篇文章:
  •   
  • 下一篇文章: