事务就是一件事,一堆SQL组

这些SQL要么一起完成,要么一个都不做, 它是一个不可分割的工作单位

事务是并发控制的基本单位,保证了数据的完整

事务满足著名的ACID条件

原子性:

在学习事务时,经常有人会告诉你,事务就是一系列的操作,要么全部都执行,要都不执行,这其实就是对事务原子性的刻画;虽然事务具有原子性,但是原子性并不是只与事务有关系,它的身影在很多地方都会出现

如果操作并不具有原子性,并且可以再分为多个操作,当这些操作出现错误或抛出异常时,整个操作就可能不会继续执行下去,而已经进行的操作造成的副作用就可能造成数据更新的丢失或者错误

其难点在于并行事务的原子性处理

MySQL 使用回滚日志undo log实现事务的原子性

一致性:

在事务开始之前和事务结束以后,数据库的完整性没有被破坏

其实除了ACID的一致性,CAP原则中也有一个一致性

CAP中的一致性指的是分布式系统中的各个节点中对于同一数据的拷贝有着相同的值

ACID中一致性指的是数据库的规则,如果 schema 中规定了一个值必须是唯一的,那么一致的系统必须确保在所有的操作中,该值都是唯一的

隔离性:

数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致