Spring 事务概述

2016-11-25  本文已影响35人  zlb

此文章摘抄自:<a href="http://sishuok.com/forum/blogPost/list/0/2472.html"> [涛哥]</a>

</br>

事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务

</br>

一.事务概述

事务必需满足ACID(原子性、一致性、隔离性和持久性)特性,缺一不可:

在实际项目开发中数据库操作一般都是并发执行的,即有多个事务并发执行,并发执行就可能遇到问题,目前常见的问题如下:

<b>丢失更新:</b>两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的;
<b>脏读:</b>一个事务看到了另一个事务未提交的更新数据;
不可重复读:在同一事务中,多次读取同一数据却返回不同的结果;也就是有其他事务更改了这些数据;
<b>幻读:</b>一个事务在执行过程中读取到了另一个事务已提交的插入数据;即在第一个事务开始时读取到一批数据,但此后另一个事务又插入了新数据并提交,此时第一个事务又读取这批数据但发现多了一条,即好像发生幻觉一样。

为了解决这些并发问题,需要通过数据库隔离级别来解决,在标准SQL规范中定义了四种隔离级别:

二.事务类型
上一篇 下一篇

猜你喜欢

热点阅读