mysql
事物基本要素ACID
原子性:事物要么全部提交成功,要么全部失败;
一致性:事物开始和结束,一致性约束没有破坏;约束A+B=1,如果A变了,B也要随之改变;
隔离性:同一时间,只允许一个事务对数据进行请求,事务之间不互相干扰;A从银行卡取钱,A取钱结束之前B不能对银行卡进行转钱。
持久性:事务完成后,事务对数据库的操作都将保存到数据库中,不能进行回滚。
事务并发问题
1、脏读:事务A读取事务B未提交的数据,然后事务B回滚了,事务A就产生了脏读。
2、不可重复读:事务A重复读取数据,事物B对数据进行了更新,导致事务A多次读取的数据不一致。
3、幻读:幻读和不可重复读类似,A对某个条件下的数据进行更新,这时候B又插入了一条数据,当A修改完数据后发现还有一条数据没有进行修改,幻读主要针对的是新增和删除数据,不可重复读主要针对的是修改数据。
mysql四种隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交 read-uncommitted | 是 | 是 | 是 |
读已提交 read-committed | 否 | 是 | 是 |
可重复读 repeatable-read | 否 | 否 | 是 |
串行化 serializable | 否 | 否 | 否 |
mysql默认隔离级别 repeatable-read