1.事务是什么?
事务使应用程序中一些列严密的操作,所有操作必须成功完成,否则每一个操作中的所有更改都会被撤销。也就是事务具有原子性,一个事务中的一系列操作要么全部成功,要么一个不做。
2.事务的四大特性
数据库事务transanction正确执行的四个基本要素。ACID:原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。
(1)原子性:整个事务中发生的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,就会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
(2)一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
(3)隔离性:隔离状态执行事务,使他们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化请求,使得在同一时间只有一个事务用于同一数据。
(4)持久性:在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,不会被回滚。
3.并发事务导致的问题
1.第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。
2.脏读:一个事务读取到另一个事务未提交的更新数据。
3.幻读也叫虚读:一个事务执行两次查询,第二次结果集包含第一次中没有或某些行已经被删除的数据,造成两次结果不一致,只是另一个事务在这两次查询中间插入或删除了数据造成的。
4.不可重复读:一个事务两次读取同一行的数据,结果得到不同状态的结果,中间正好另一个事务更新了该数据,两次结果相异,不可被信任。
5.第二类丢失更新:是不可重复读的特殊情况。如果两个事物都读取同一行,然后两个都进行写操作,并提交,第一个事物所做的改变就会丢失。