四大特性(ACID)
原子性(Atomicity): 指事务包含的所有操作要么全部成功,要么全部失败回滚
一致性(Consistency): 指一个事务执行之前和执行之后都必须处于一致性状态
持久性(Durability): 持久性是指事务的操作一旦提交,对于数据库中数据的改变是永久性的
隔离性(Isolation):指当用户并发访问数据库时,多个并发事务之间,应当相互隔离。(最差的是,串行执行即一个事务执行完成之后,另一个事务在执行)
隔离级别
Read Uncommitted (读未提交):
1.可能会出现 脏读 、不可重复读 、幻读
2.所有事务都可以看到其他未提交事务的执行结果
Read Committed(读已提交) :
1.可能会出现不可重 复读 、幻读
2.一个事务只能看见已经提交事务所做的改变
3.其他数据隔离级别
Repeatable Read (可重复读):
1. 可能会出现 幻读
2.它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行
3.MySQL默认隔离级别
Serializable(串行读取):
1.它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁
2.在这个级别,可能导致大量的超时现象和锁竞争
3.这是最高的隔离级别
事务传播行为
Propagation_Required:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置
Propagation_Supports:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行
Propagation_Mandatory:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常
Propagation_Requires_New:创建新事务,无论当前存不存在事务,都创建新事务
Propagation_Not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
Propagation_Never:以非事务方式执行,如果当前存在事务,则抛出异常
Propagation_Nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与Propagation_Required类似的操作