mysql的四种事务隔离级别
一、事务的4个基本属性
1、原子性:Atomicity 事务开始后要么全部成功,要么全部失败。
2、一致性:Consistency,事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到。
3、隔离性:Isolation 同一时间,同一数据只允许一个事务操作,不同事务间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。
4、持久性:Durability 事务完成后,事务对数据库的操作是永久性的。结束就彻底结束不能反悔了。
二、事务的并发可能引起的3个问题
1、脏读:读到其他事务回滚的数据。(事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据)
2、不可重复读:在一个事务中,多次读取同一数据,结果却不一样。一个事务多次读同一数据的间隙,另外的事务对数据做了修改,导致读取结果不一致。
3、幻读:一个事务修改全表数据的时候,这时另一个事务添加了一条数据。导致第一个事务用户发现数据少改了一条,产生幻觉一样。
三、mysql事务的4个隔离级别
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |