1、啥是事务?
1.1、事务的概念
事务(Transaction)一个事务必须是一组不可分割的工作集合,整个工作集合的所有操作要么全部执行成功,要么全部执行失败。
1.2、数据库事务的概念
事务就是一组原子性的SQL语句操作。事务内的语句,要么全部执行成功,要么全部执行失败。
2、事务的特性(ACID)
原子性(Atomicity) 一个事务必须是一组不可分割的工作集合,整个工作集合的所有操作要么全部执行成功,要么全部执行失败。
一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性(Isolation)事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响,该修改即使出现系统故障也将一直保持。
3、事务的隔离级别
隔离性 | 脏读 | 不可重读度 | 幻读 |
---|---|---|---|
ISOLATION_READ_UNCOMMITTED(未提交读) | true | true | true |
ISOLATION_READ_COMMITED(提交读) | false | true | true |
ISOLATION_REPEATABLE_READ(可重复读) | false | false | true |
ISOLATION_SERIALIZABLE(可串行化) | false | false | false |
4、事务传播特性
传播性 | 描述 |
---|---|
PROPAGATION_REQUIRED | 当前有事务就用当前的,没有就用新的 |
PROPAGATION_SUPPORTS | 事务可有可无,不是必须的 |
PROPAGATION_MANDATORY | 当前一定要有事务,不然就抛异常 |
PROPAGATION_REQUIRES_NEW | 无论是否有事务,都起个新的事务 |
PROPAGATION_NOT_SUPPORTED | 不支持事务,按非事务方式运行 |
PROPAGATION_NEVER | 不支持事务,如果有事务就抛出异常 |
PROPAGATION_NESTED | 当前有事务就在当前事务里再起一个事务 |
网友评论