MySQL事务隔离级别和Spring事务隔离级别的联系
1、MySQL事务隔离级别
- 读未提交:该级别事务能够读取到其余未提交的事务,形成脏读。
- 读已提交:能读取到其余提交的事务,能够避免脏读,但可形成不可重复读与幻读。
- 可重复读:MySQL默认事务隔离级别,能够解决不可重复读,但没法阻止新插入的记录形成后者可能会查到前者没法查出的数据。
- 序列化:事务的最高隔离级别,全部事务串行执行,性能最差。
2、Spring事务隔离级别
- Isolation.Default:Spring:默认隔离级别,即采用数据库的隔离级别。
- Isolation.Read_Uncommit:事务未提交可读,会出现脏读。
- Isolation.Read_Commit:不可脏读,但会出现幻读和不可重复读。
- Isolation.Repeatable_Read:不可脏读,不可重复读,但会出现幻读。
- Isolation.Searializable:事务的最高隔离级别,全部事务串行执行。
3、Spring事务传播行为
- Required:若是当前存在事务会支持该事物,不存在则开启新的事务。
- Required_New:建立新的逻辑事务,表示每次都建立新的逻辑事务。
- Supports:支持当前事务,若是没有事务就会以非事务方式执行。
- Not_Support:以非事务方式执行,若是当前存在事务就暂停该事务,以非事务方式运行。
- Mandatory:支持当前事务,若是没有事务则抛出异常。
- Never:以非事务方式运行,若是有事务则抛出异常。
- Nested:嵌套事务支持,若是当前存在事务,则嵌套在事务内部执行,如不存在事务会新建事务,内部事务不影响外部事务,外部事务回滚则会致使内部事务回滚。
欢迎关注本站公众号,获取更多信息