事务隔离级别与实现——事务隔离:为什么你改了我还看不见?
参考文章: https://time.geekbang.org/column/article/68963 目录 隔离性与隔离级别 事务隔离的实现 事务的启动方式 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。 MySQL 原生的 MyISAM 引擎就不支持事务,本文以 InnoDB 为例,剖析 MySQL 在事务支持方面的特定实现。 隔离性与隔离级别 1、事务的隔离性:ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性) 2、并发问题:脏读、不可重复读、幻读 3、隔离级别:读未提交、读提交、可重复读、串行化 读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。 可重复读是指,一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 串行化,顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 举例: mysql> create table T(c int) engine=InnoDB; insert into T(c) values(1); 在实现上