事务

事务四大特性

原子特性

一致性

隔离性

持久性

  • spring设置的事务隔离级别应该是针对的session
  • 隔离级别和自动提交都有session和global
innodb的事务隔离级别

read uncommitted
read repetable:满足ACID
read committed:不满足A
seriallize

  • 幻读强调的是查询之后,后续操作依照查询结果进行相应处理发现结果跟想象中不一致
  • 不可重复的强调的是我们读取的数据不一致了(偏向于记录被修改,我觉得也包含删除和新增记录)
事务的实现

redo :实现事务的原子和持久
undo:实现一致
隔离性 也可以依靠MVCC或者锁

  • redo 回复事务修改的页面,redo log是逻辑物理日志,因为不是纯物理日志。顺序写

  • undo 回滚到行记录的某个版本,逻辑日志 根据每行记录,需要进行随机读写

  • redo buffer 先写入文件系统缓存 在写入磁盘(即调用fsync),都是以512字节进行存储

  • 因为重做日志块和磁盘扇区的大小一样都是512B,因此写入是原子性。
    undo是逻辑日志,即修改一个页中的对应的逻辑日志,而不是把整个页的都物理回滚。undo主要是执行对应的相反操作,比如事务插入了数据 我们就删除,这样的好处就是防止这个页上还有其他事务的操作被物理回滚。

  • undo log 会产生redo log

  • purge 是专门处理undo 页和删除修改记录,当我们采用delete和update删除原有数据的时候 ,只是设置deleteflag=1 记录并没有删除

  • 因为要支持MVCC所以不能立马删除记录,当记录没有事务使用,则可以删除

spring的事务隔离级别和mysql的事务隔离级别
是一致的 同时还多了一个默认的 是根据数据库事务隔离级别进行设置spring事务

mysql的自动提交代表:这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置autocommit的值改变是否是自动提交autocommit模式。

你可能感兴趣的:(事务)