一:事务的四大特性ACID及保证的原理
1.原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
保证:开启事务,提交事务/回滚事务是一个原子性操作
2.一致性(Consistency)
事务前后数据的完整性必须保持一致:
保证:mysql保证一致性:事务、锁、分布式事务下的二次提交(本地提交和协调者统一提交)、主从下的一致性(主从复制保证)
(1)事务:要么全部执行成功,要么全部失败回滚
(2)锁:操作数据时不出错
(3)主从时的一致性:主从同步保证了主从之间的一致性
(4)分布式事务下的一致性:本地提交和协调者统一提交保证整个事务的一致性
3.隔离性(Isolation)
事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。
保证:有四大隔离级别(读未提交、读已提交、可重复读、串行化读)
4.持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使是数据库发生故障有不会对其有任何影响。
保证:事务提交之后,用binlog做持久化