Mysql事务及锁读书笔记

索引

主键索引

普通索引

事务(innodb)与锁

ACID属性,A(atomicity)原子性表示全做全不做,C(consistency)一致性表示事务执行前后不破坏数据库完整性约束,I(isolate)隔离性表示事务间不相互干扰,D(durability)持久性表示事务完成后数据保存到数据库,不会被回滚。

redol og

事务现在内存提交,按一定策略刷盘,未提交的事务也会刷盘,redolog以log block为记录物理单位,log block大小为512字节,事务记录按照事务id关联,每个事务对应多个记录,逻辑记录动态长度,编号LSN(log sequence number)64位整数,表示日志自数据库安装开始写入日志的总字节数。
logblock存储格式:

  • statement,记录原始sql

  • raw,记录数据修改前后值

  • 记录page字节数据
    逻辑日志按照修改的page分成对个物理事务mtr,每个mtr对应一个LSN,逻辑事务多个mtr日志不一定连续,物理事务mtr内部连续。

  • 一个事务对应多条redolog,事务的redo log不连续存储。

  • redo log不保证事务的原子性,而是保证了持久性。无论提交还是未提交事务日志,都会记录redolog。从而使得redo log回放完毕,数据库恢复到宕机前。

  • 未提交事务进行回滚,回滚通过checkpoint的“活跃事务表”+每个事务的开始结束标记+undo log来实现。

  • redo log具有幂等性,通过每个page的pageLSN实现。

  • 无论提交或未提交事务,其对应的page都有可能被刷到磁盘中,未提交的事务对应的page数据,在宕机

你可能感兴趣的:(笔记,mysql,架构)