1. 事务的ACID
原子性(Atomicity)
指每个事务就如同一个整体,要么整个过程全部提交,要么全部回滚。这就是事务的原子性,不可分割。
一致性(Consistency)
指一条数据在进行事务操作前后和其他数据数据的关系不变,例如外键关联,删除了主键,那么以它为外键的数据也需要相应删除掉。
隔离性(Isolation)
指将不同的事务隔离起来,使每一个事务看起来都独自使用当前的资源。这就需要事务执行时要按照一定序列,避免不同的事务互相影响。
持久性(Durability)
最后数据存储到数据库中。
2. 乐观锁及悲观锁
乐观锁是指在取数据的时候默认别人不会更改自己获取的数据,不会给数据加锁。依赖于应用层实现。(如同逻辑上的标志位实现)
悲观锁是指在取数据时,不管别人改不改数据,都给数据增加锁。依赖于数据库层实现。(只有数据库层实现才能实现排他性,避免其他应用修改数据。)
3. 脏读与幻读
脏读:读取无效的数据。例如A事务读取了B事务未提交的数据,而这条数据又因为B事务回滚撤销,A就读取了一条脏数据。
幻读:同一个事务当中,多次读取结果不相同。(读取了新的数据或发现数据被删除了。)
不可重复读:同一个事务当中,多次读取结果不相同。(读取的数据发现被修改了。)