什么是数据库事务?事务的特性是什么?
1,事务:
是数拭库操作的最小工作单元,是作为单个迈辑工作单元执行的一系列阳操f作;
这些操作作为一个整体一起向系统现交,要么都执行、要么都不执行;
事务是一组不可再分言的操作集合(工作逻辑单元)
2,事务都有ACID特性
2.1,什么是ACID?
1、原子性atomicity(过程保证,保证多个操作都被执行)
只做一个步骤
事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
2、一致性consistency(结果保证,保证多个操作都执行成功)
保证要屹完刚张嘴挂了,失去一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态.
3、限离性isolation (并发事务互不干扰)
不被干扰刚张嘱别人塞了东西
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰
4、持续性永久性durability (一旦提交成功就会产生结果,结果是不会被其他原因影响结果)
保存吃到肚子里
也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响.
3,并发事务会有哪些问题?
1,脏读(Dirty read)
是一个事务在处理过程中读取了另外一个事务来提交的数据
当一个事务正在访问数据并且对其进行了修改,但是还没提交事务,这时另外一个事务也访问了这个数据,然后使用了这个数据,因为这个数据的修改还没摸交到数据库,所以另外一个事务读取的数据就是"…脏数据*,这种行为就是赃读,依据赃数据所做的操作可能是会出现问题的.
2,修改丢失(Lost of modify)
是指一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务修改了这个数据之后,第二个事务也修改了这个数据,这样第一个事务内修改结果就被丢失,这种情况就被称为修改丢失
3,不可重复读(Unrepeatableread)
指在一个事务内多次读取同一数据*,在这个事务还没结束时,另外一个事务也访问了这个数据并对这个数据进行了修改,那么就可能造成第一个事务两次读取的数据不一效,这种情况就被称为不可重复读.
4,幻读(Phantom read)
是指同一个事务内多次查询返回的结果集不一样(比如增加了或者减少了行记录).幻读与不可重复读类似,幻读是指一个事务读取了几行数据,这个事务还没结束。投着另外一个事务插入了一些数据,在随后的查询中,第一个事务该取到的数据就会比原本读取到的多,就好像发生了幻觉一样,所以称为*幻读*