什么是事务?
要么都成功,要么都失败
A给B转账
A减钱,B一定要加钱,不能A转了而B没收到
ACID原则
原子性,一致性,持久性,隔离性
例如A给B转账
A 1000元 B 500元
- 原子性:A转出200 和B转进200必须一起执行,绑在一起操作,转完后A800 B700
- 一致性:最终A和B总钱数是1500,不会改变
- 持久性:事务一旦提交就不可逆,A要转给B200元,如果操作之前服务器断电了,那么服务器重启后A1000 B500,如果操作之后服务器断电了,那么服务器重启后A800 B700.
- 隔离性:几组转账用户间互不影响,如A给B C给D ……互不相干
隔离导致的一些问题 - 脏读:一个事务读了另一个没有提交的事务
- 不可重复读:在一个事务内读取的表中某一行,多次读取数据不一致
- 虚读:在一个事务内读取了其他事务插入进来的数据