什么是数据库事务?
数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败。
数据库事务有什么性质?
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性;
原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做;
一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的;
隔离性(Isolation)
一个事务的执行不能被其他事务干扰;
持续性/永久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的;
隔离性
数据库的原子性、一致性、持久性都是针对单个事务而言的,但是一旦多个事务并发执行,就存在事务与事务的隔离性问题,因此就产生了事务的隔离级别:
Read uncommitted 读未提交
事务B读取了事务A未提交的数据,产生脏读;
Read committed 读已提交
事务B只能读取事务A已经提交的数据,但是事务B在一个事务中读取了两次,两次分别是事务A提交前和提交后,造成不可重复读(也就是重复读的数据不一致)
Repeatable read 重复读
可重复读通过版本控制来实现事务B只能读到版本小于当前事务版本的数据,但是对于在事务B执行期间新插入的数据,重复读时出现不一致(第一次没有,第二次有),造成幻读