Mysql数据隔离级别
1. 事务的基本属性
1.1 原子性(Atomicity)
事务是一个不可分割的整体,就想一个原子一样是物质构成的基本单位。事务开启后所有操作要么都做完,要么都不做,不可能停滞在中间环节。
1.2 一致性(Consistency)
事务开始到结束,数据库的完整性不会被破坏。例如A向B转账,不可能A扣了钱而B没收到。
1.3 隔离性(lsolation)
只允许一个事务请求同一数据,不同事物之间彼此没有任何干扰。比如A正在从一张银行卡取钱,那么B在A取钱结束钱不能向这张卡转钱。
1.4 持久性(Durability)
事务完成后,事务对数据库的所有更新操作将会保存到数据库。
2.事务并发问题
2.1 脏读
事务A读取了事务B未提交的数据
2.2 不可重复读
事务A多次读取同一份数据,再此期间事务B修改了部分数据,导致事务A先后读取到的数据不一致
2.3 幻读
事务A更新一批数据的状态时,事务B向数据库又插入了一条数据,导致最后新插入的数据未更新。看起来好像出现幻觉一样。
注意: 不可重复度和幻读的区别是,不可重复读侧用于修改,幻读侧重于新增或删除。
3.Mysql数据库事务隔离级别
隔离级别 | 脏读 | 不可重复度 | 幻读 |
---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read)(默认) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |