事务是什么
事务指的是一连串数据库的操作。
1.1事务应该具有4个属性:
原子性:一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做
一致性:事务的开始和结束,数据都必须保持一致
隔离性:一个事务的执行不能被其他事务干扰,中间状态不可见
持久性:一旦提交,它对数据库中数据的改变就应该是永久性的
这四个属性通常称为ACID特性。
1.2 并发时事务引发的问题
1. 脏读 (事务A读到了事务B的中间状态,破坏了隔离性)
2. 不可重复读 (事务进行中,再次读取以前读过的数据,却发现其读出的数据已经发生了改变、或某些记录已经被删除了!)
3. 幻读(事务进行中,再次以相同条件查找,发现其他事务插入了满足其查询条件的新数据)
幻读和不可重复读的区别:
不可重复读的重点是修改和删除:在同一事务中,同样的条件,第一次读的数据和第二次读的数据不一样。(因为中间有其他事务提交了修改/删除)
幻读的重点在于新增:在同一事务中,同样的条件,,第一次和第二次读出来的记录数不一样。(因为中间有其他事务提交了插入)
1.3 为了解决上面的问题 (制定事务隔离的标准)
SQL标准定义了4类隔离级别,每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的。低级别的隔离级别一般支持更高的并发处理,并拥有更低的系统开销。