这些SQL组成一个事情单元,要么“全部” 实行,要么“全不” 实行。
事务的特性-ACIDA -- Atomicity 原子性
事务中的全部操作,要么全成功实行,要么全部失落败。

也便是说,不管事务的过程、逻辑多么繁芜,实行韶光多么长,终极的结果只有“成功”或者“失落败”,不会涌现数据改了一半的情形
C -- Consistency 同等性
数据是从一个同等的状态转为另一个同等的状态
可以理解为,数据变动前后,总是符合同一个标准
I -- Isolation 隔离性
事务的隔离性,实际业务中,事务肯定是并发实行的。
也便是:你干你的活儿,我干我的活儿,井水不犯河水。当两个事务或者多个事务要浸染于同一个工具时,会有“锁”的观点在个中(这个稍后再说)
D -- Durability 持久性
事务提交后,其对数据的修正便是永久性的。后续的操为难刁难之前的操作无任何影响
ACID的担保手段①、同等性的担保
数据库方面:不难明得,如果原子性、隔离性、持久性都担保了,那么同等性也会被担保
业务代码层面:业务代码该当是逻辑合理的,比如我给你转钱的场景,我这边钱数减少100后,代码逻辑中你的钱数就要增多100
数据层面:数据的校验担保
②、原子性的担保
undo log 回滚日志
日志中会记录你所有的操作和操作内容,须要回滚时,根据该日志实行即可。比如 当你insert一条记录后,如果须要事务回滚,则可根据undo log 将这条记录 delete
③、持久性的担保
redo log 对数据操作时,不仅在内存中有该数据,redo log中也有,如果事务实行时宕机,内存中的数据丢失,在数据库重启时会根据redo log中规复数据
④、隔离性的担保
通过 “锁” 和 MVCC (Mutil-Version Concurrency Control,多版本并发掌握)
锁:共享锁(读锁)和排他锁(写锁)
(暂时先记录到此,后续连续补充)