这就是事物处理的原子性
2、事务原子性
上面说了事务的原子性是保证:事务内的一组操作全部成功(或者全部失败),为了实现原子性,就需要通过日志:将所有对数据的操作都写入日志,如果事务中的一部分操作已经成功...3、体现事务原子性和数据库一致性和持久性的常见场景
数据库崩溃后重启,此时数据库处于不一致的状态,此时数据库必须做crash recovery操作,大致步骤如下:
a、通过日志REDO(重演所有执行成功但是未写入到磁盘的操作...)
b、再对到数据库崩溃前没有执行完成的事务进行UNDO(撤销所有执行了一部分,但是有一部份还没有执行完成,且尚未提交的操作,保证事务的原子性)
c、crash recovery结束后,数据库恢复了一致性...,可以继续工作
4、多线程下的事务存在的问题
在单线程下,事务的原子性,能保证数据库的一致性,但是在某些情况下,事务的原子性并不能保证数据库的一致性。...为了保证数据的一致性,引入隔离性,既保证每一个事务看到的数据是一致的,确保一个事务在处理数据的同时,没有其他事务对自己正在处理的数据进行干扰,就好像其他事务都是不存在的一样,即事务在并发执行后的状态,和串行执行后的状态时一样的