数据库的隔离
数据库的隔离级别有哪些?
- 未提交读:一个事务在提交前,它的修改对其他事务也是可见的。
- 提交读:一个事务提交之后,它的修改才能被其他事务看到。
- 可重复读:在同一个事务中多次读取到的数据是一致的。
- 串行化:需要加锁实现,会强制事务串行执行。
数据库的隔离级别分别可以解决数据库的脏读、不可重复读、幻读等问题。
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
未提交读 | 允许 | 允许 | 允许 |
提交读 | 不允许 | 允许 | 允许 |
可重复读 | 不允许 | 不允许 | 允许 |
串行化 | 不允许 | 不允许 | 不允许 |
MySQL的默认隔离级别是可重复读。
隔离级别是如何实现的?
事务的隔离机制主要是依靠锁机制和MVCC(多版本并发控制)实现的,提交读和可重复读可以通过MVCC实现,串行化可以通过锁机制实现。