一、组成

二、一条更新语句怎么执行的
- 首先查询数据是否在内存中,如果在内存中则直接更新,如果不在内存中将数据加载到内存。每个内存页16K,更新后的内存称为脏页,需要在后续刷入磁盘
- 更新内存后,将物理修改(某字段改为某个值)写入到redolog中,此时redolog处于prepare状态,事务还没有提交
- 将逻辑修改(某字段进行了某些逻辑操作)写入binlog后,redolog才处于commit状态,
这时候事务才提交称之为两阶段提交- 如果没有两阶段提交,先提交redolog,数据库宕机。恢复后可以根据redolog找回数据;但是当数据库使用binlog备份恢复时,会缺少数据
- 如果没有两阶段提交,先提交binlog,数据库宕机。恢复后无法根据redolog找回数据;但是当数据库使用binlog备份恢复时,会多数据
