解析mysql二进制日志处理事务与非事务性语句的区别

402 查看

在事务性语句执行过程中,服务器将会进行额外的处理,在服务器执行时多个事务是并行执行的,为了把他们的记录在一起,需要引入事务缓存的概念。在事务完成被提交的时候一同刷新到二进制日志。对于非事务性语句的处理。遵循以下3条规则:

1)如果非事务性语句被标记为事务性,那么将被写入事务缓冲。

2)如果没有标记为事务性语句,而且事务缓存中没有,那么直接写入二进制日志。

3)如果没有标记为事务性的,但是事务缓存中有,那么写入事务缓冲。

注意如果在一个事务中有非事务性语句,那么将会利用规则2,优先将该影响非事务表语句直接写入二进制日志。