WHCSRL 技术网

《MySQL实战45讲》03 | 事务隔离:为什么你改了我还看不见?

事物是在引擎层(并不是所有引擎都支持事物,如MyISAM就不支持事物)实现的,具有ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)特性,四种隔离级别(read uncommitted、read committed、repeatable read、serializable,即读未提交、读提交、可重复读、串行化),保证了一组数据库的操作,要么全部成功,要么全部失败。


隔离性与隔离级别

当数据库存在多个事物同时执行时,就会出现脏读(dirty read)、不可重复读(no-repeatable read)、幻读(phantom read)的可能,故通过隔离级别解决该问题。事物隔离级别包括:读未提交、读提交、可重复读、串行化。

  • 读未提交:一个还没提交的事物的变更可以被别的事物看到(无锁);
  • 读提交:一个事物提交后,别的事物才能看到该事物的变更(写加行锁);
  • 可重复读:一个事物在执行过程中看到的数据,总是和事物启动时看到的一致(读、写加行锁,默认的隔离级别);
  • 串行化:对同一行记录会加读、写锁(读写加表锁)。

本文为《MySQL实战45讲》学习笔记

推荐阅读