MySQL事务的四种隔离级别

事务的基本要素:

  原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态.

  一致性(Consistency):事务开始后,数据库的完整性约束没有被破坏.例如:A向B转账,A扣除了金额,B缺没收到

  隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同事务之间没有彼此没有干扰.

  持久性(Durability):事务完成后,事务对数据库的所有更新都保留到数据库,不能进行回滚.

事务并发问题

  脏读:事务A读取了事务B更新的数据, 事务B进行回滚.事务A读取到的数据就是脏数据

  不可重复读取:事务A多次读取同一数据,事务B在事务A多次读取过程中,对数据多次更新并提交,导致事务A多次读取同一数据,结果不一致

  幻读:系统管理员对数据库中的所有学生成绩从具体分数改变为ABCD等级,系统管理原B添加一条学生的具体分数.系统管理原A改完后发现还有一条数据没有改过来,就好像发生幻觉一样.

小结:

  不可重复读取重于修改,取解决锁住满足条件的行.幻读重于插入和删除,解决锁住表

MySQL事务隔离级别

事务隔离级别 脏读 不可重复读取 幻读
读取未提交(read-uncommit)
不可重复读取(read-committed)
可重复读取(repeatable-read)
串行化(serializable)

mysql默认事务隔离级别为:可重复读取(reeatable-read)

spring中事务管理

  事务抽象

  提供了一致的事务模型(JDBC/Hibernate/mybatis/dataSource/JTA)

  

  事务接口

  PlatformTransactionManager

      • DataSourceTransactionManager
      • HibernateTransactionManager
      • JtaTransactionManager

  事务相关方法

  void commit(TransactionStatus status) throws TransactionException;

   void rollback(TransactionStatus statusthrows TransactionException;

  TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException;

  定义事务相关

   TransactionDefinition 

     属性:

     Propagation(传播方式)

     Isolation(隔离)

     Timeout

        Read-only status (true or false)    

   自定义事务: 

  // 其中 dataSource 框架会自动为我们注入
  @Bean(name = "MyTransaction")
  public PlatformTransactionManager txManager(@Qualifier("MyDataSource") DataSource dataSource) {
   return new DataSourceTransactionManager(dataSource);
  }

  传播特性

传播性 描述
PROPAGATION_required 0 当前有事务就用, 没有事务就新建一个事务(默认)
PROPAGATION_supports  1 事务可有可无,不是必须的
PROPAGATION_mandatory   2 当前一定要有事务,不然就抛出异常    
PROPAGATION_REQUIRED_NEW   3 无论是否有事务,都创建一个新事务    
PROPAGEATION_NOT_SUPPORTS 4
不支持事务,按照非事务方式进行
PROPAGEATION_NAVER   5
不支持事务,如果有事务则抛出异常
PROPAGEATION_NESTED 6 当前有事务就在当前事务内在起一个事务,内部事务不影响外部事务

事务隔离特性

隔离性 脏读 不可重复读取 幻读
ISOLATION_READ_UNCOMMITTED (未提交) 1
ISOLATION_READ_COMMITTED(不可重复读取) 2 ×
ISOLATION_REPEATABLE_READ(可重复读取) 3 × ×
ISOLATION_SERIAILZABLE(串行化) 4 × × ×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/shar-wang/p/11615760.html