五个事务隔级别分别为:lsolation的属性值
在一个典型的应用程序中,多个事务同时运行,经常会为了完成他们的工作而操作同一个数据。并发虽然是必需的,但是会导致一下问题:
- 脏读(Dirty read)-- 脏读发生在一个事务读取了被另一个事务改写但尚未提交的数据时。如果这些改变在稍后被回滚了,那么第一个事务读取的数据就会是无效的。
- 不可重复读(Nonrepeatable read)-- 不可重复读发生在一个事务执行相同的查询两次或两次以上,但每次查询结果都不相同时。这通常是由于另一个并发事务在两次查询之间更新了数据。
- 幻影读(Phantom reads)-- 幻影读和不可重复读相似。当一个事务(T1)读取几行记录后,另一个并发事务(T2)插入了一些记录时,幻影读就发生了。在后来的查询中,第一个事务(T1)就会发现一些原来没有的额外记录。
1,default 默认的事务隔离级别
2,read_uncommitted 读未提交,一个事务可以操作另外一个未提交的事务,不能避免脏读,不可重复读,幻读,隔离级别最低,并发性 能最高
4,repeatable_read 保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
5,serializable 隔离级别最高,消耗资源最低,代价最高,能够防止脏读, 不可重复读,幻读。
七个事务的传播行为
1,propagation_required 如果一个事务存在,则支持当前事务,如果不存在,则创建新的事务
2,propagation_supports 如果一个事务存在,则支持当前事务,如果不存在,则非事务的方法运行
3,propagation_mendatory 如果一个事务存在,则支持当前事务,如果存在,则抛出异常
4,propagation_requires_new 总是要开启一个新的事务,如果事务存在,将该事务挂起
5,propagation_not_supported 总是非事务方法运行,并挂起所有的事务
6,propagation_never 总是非事务方法运行,如果事务存在则抛出异常
7,propagation_nested 某一个事务存在,则运行在一个嵌套的事务中