Spring_事务其他属性(隔离级别&回滚&只读&过期)

并发事务所导致的问题

  • 当同一个应用程序或者不同应用程序中的多个事务在同一个数据集上并发执行时,可能会出现许多意外的问题
  • 并发事务所导致的问题可以分为下面三种类型:
    • 脏读: 对于两个事务T1、T2,T1读取了已经被T2更新但是还没提交的字段,之后,若T2回滚,T1读取的内容就是临时且无效的。
    • 不可重复读: 对于两个事务T1、T2,T1读取了一个字段,然后T2更新了该字段,之后,T1再次读取同一个字段,值就不同了。
    • 幻读: 对于两个事务T1、T2,T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行,之后,如果T1再次读取同一个表,就会多出几行。

超时和只读属性

  • 由于事务可以在行和表上获得锁,因此长事务会占用资源,并对整体性能产生影响。
  • 如果一个事务只读取数据但不做修改,数据库引擎可以对这个事务进行优化。
  • 超时事务属性: 事务在强制回滚之前可以保持多久,这样可以防止长期运行的事务占用资源。
  • 只读事务属性: 表示这个事务只读取数据但不更新数据,这样可以帮助数据库引擎优化事务。

你可能感兴趣的:(Spring_事务其他属性(隔离级别&回滚&只读&过期))