数据库特性.md

事务特性 ACID

  • 原子性
  • 一致性
  • 永久性
  • 隔离性

事务的属性

传播属性

Propagation: 定义事务的边界,用来定义当前方法是否需要事务,常用于取值。

  • REQUIRED 
    必须添加事务,如果当前没有事务,则创建一个新的事务,一般用于增删改操作
  • SUPPORTS 
    可以没有事务,如果当前有事务则运行,如果没有事务也可以运行,一般用于查询操作。

隔离级别

 isolation: 用于解决事务并发时候出现的问题。
       * READ_COMMITTED,已提交度--->避免脏读,但可能发送不可重复读或者幻读
       * READ_UNCOMMITTED 未提交读----->可能会发生脏读、不可重复读和幻读
        * REPEATABLE_READ 可重复读-------->避免脏读和不可重复读,但可能发生幻读
         *SERIALIZABLE 可系列化------>避免脏读、不可重读和幻读,相当于但并发,没意义
    *  脏读:一个事务读取到另外一个事务没有提交的数据。
    * 不可重复读:一个事务已经读取数据,另外一个事务在修改数据,可能导致使用的数据与数据库不同步
     * 幻读或虚读: 一个事务已经读取数据,另外一个事务在添加或者删除数据,可能导致使用的数据量与数据库不同步。

回滚条件

rollback:默认抛出RuntimeException 时才会回滚 
rollbackFor="" 表示发送该异常时回滚 
noRollbackFor="" 表示发送该异常不会滚

只读优化

readOnly:该事物中只能读取,一般用于查询

超时处理

timeout: 配置事务的超时时间,一般不配置。

原文地址:https://www.cnblogs.com/lilihai/p/10129926.html