zhanggao / learnNotes

2 stars 2 forks source link

单机事务 #10

Open zhanggao opened 4 years ago

zhanggao commented 4 years ago
  1. 读未提交,A事务修改的数据,但是没有commit,B事务执行过程中可以直接读到。
  2. 读已提交,A事务提交的数据,B事务执行过程中可以直接读到。
  3. 可重复读,B事务开始执行,直到结束,这段时间重复读一个数据,数据永远一致,
  4. 串行化,读就加读锁,写就加写锁,写操作不能两个事务同时进行。
zhanggao commented 4 years ago

每条记录在更新的时候都会记录一个回滚日志(undo log),保存了数据更改之前的一个版本。 不同的事务有不同的read view,当事务A重复读一个数据时,就会将数据回滚到read view A,可重复读就算这么实现的。

zhanggao commented 4 years ago

幻读 脏读 不可重复读

间隙锁解决了幻读问题

zhanggao commented 3 years ago

Spring 事务传导机制 REQUIRED:默认,如果上下文存在事务则加入,不存在则新增。 SUPPORTS:如果上下文存在事务则加入事务,没有的话就不用在事务中执行,应用较少。 MANDATORY:强制调用的上下文中必须有事务,否则报错。 REQUIRES_NEW:新建一个子事务,将父事务挂起 NOT_SUPPORTED:如果上下文中存在事务,则将事务挂起,没有的话正常执行,通常用于无关紧要的逻辑,避免事务过长。 NEVER:要求上下文中必须不存在事务。 NESTED:嵌套事务。上下文中存在事务,则嵌套执行,不存在则新建事务。