事务,很基础的概念,但有很多细节是大家忽略的或者平时很少注意到的。这里总结一下:
实验工程 (这工程的实验代码尚不完整,再更新看心情了😛)
ACID
先说ACID,工程里说自查度娘,还是算了吧,我还是解释一下吧,度娘不靠谱
- 原子性(Atomicity) 操作原子性,同一个事务中要么所有操作都执行,要么都不执行。好理解
- 一致性(Consistency) 一致性(经常和原子性混),原意是数据库从一个状态转换为另一个状态(完全不知所云哈?)。其实说的是写入数据必须复合数据库的相关约束,包括限制、级联、触发等(还不明白?)举个例:A外键关联B,一个事务试图插入B数据,但不插入与其关联的A记录,当然这是非法事务,它违反的就是一致性原则。
- 隔离性(Isolation) 隔离型决定了,是否可以避免脏读、不可重复读、幻读,这个下面来深入说明,这个也很少有人关注过
- 持久性(Durability) 持久性,这个强调的是commit后不要存在内存中,commit要求写入硬盘,当然也就不丢了