数据库事务
数据库事务是恢复和并发控制的基本单位。是DBMS中对数据库读、写操作的一组操作序列。这些操作要么全做,要么全不做。
当事务被提交给DBMS时,DBMS应当确保这些操作序列能够成功完成并且其结果永久保存在数据库中。如果操作不能执行成功,则对已经完成的操作回滚,使数据库回到事务执行前的状态。同时,事务的执行对数据库其他事务的执行毫无影响,所有的事务具有独立性。
事务存在的目的:
1.为数据库提供了操作序列从一个失败状态恢复到正常状态的方法,也为数据库提供了即使在异常状态下也能保持一致性的方法;
2.当多个应用程序并发访问数据库时,可以提供一个隔离的方法,防止多个应用程序间的操作相互影响。
事务具有4个特性,ACID
1.原子性 Atomicity
事务作为一个完整的整体执行,作为数据库的事务的操作要么全做,要么全不做。
2.一致性 Consistency
事务的执行必须使数据库从一个一致性状态到另一个一致性状态。
3.隔离性 Isolation
多个事务并发执行时,一个事务不影响另一个事务的执行。
4.持久性 Duration
已经被提交的事务对数据库的修改应该是永久性的。
并发操作带来的数据不一致问题有:
1.丢失数据修改
事务T1修改了某个数据,事务T2也修改了同一个数据。则事务T1修改的丢失。
2.读脏数据
事务T1修改了某个数据并将其写回磁盘,事务T2读取了该数据。事务T1由于某种原因撤销了修改操作,这样T2读到的数据就与数据库中的不一致。
3.不可重复读
事务T1读取了某数据,事务T2修改了该数据,事务T1读取了该数据,这样读到的与前一次不一致。
4.产生幽灵数据(幻读)
事务T1按一定条件读取了数据,事务T2删除了部分数据,事务T1再次按原来条件读取时,发现某些缺少某些数据。
事务T1按一定条件读取了数据,事务T2增加了部分数据,事务T1再次按原来条件读取时,发现多了某些数据。

浙公网安备 33010602011771号