mysql事务的四个隔离机制理解
禁止自动提交 SET AUTOCOMMIT=0 开启自动提交 SET AUTOCOMMIT=1 读未提交 //设置read uncommitted级别: set session transaction isolation level read uncommitted; 读已提交 //设置read committed级别: set session transaction isolation level read committed; 可重复读 //设置repeatable read级别: set session transaction isolation level repeatable read; 串行化 //设置serializable级别: set session transaction isolation level serializable;
事务隔离级别
是指两个事务之间,在一个事务修改内容的情况下,另外一个事务查询数据过程的隔离级别
读未提交:
设事务A和事务B,
开启事务A、开启事务B
事务B查询某数据
事务A更新该数据,并未提交。
事务B查询该数据,发现与上次查询不一致
即事务在未提交的情况下,另外一个事务中是可以查询到更新后的数据
读已提交:
设事务A和事务B,
开启事务A、开启事务B
事务B查询某数据
事务A更新该数据,并未提交。
事务B查询该数据,发现与上次查询一致
事务A提交(commit)
事务B查询该数据,发现与上次查询不一致
即事务在未提交的情况下,另外一个事务中是查询不到修改的数据
事务在提交的情况下,另外一个事务中是可以查询到更新后的数据
可重复读:
设事务A和事务B,
开启事务A、开启事务B
事务B查询某数据
事务A更新该数据,并未提交。
事务B查询该数据,发现与上次查询一致
事务A提交(commit)
事务B查询该数据,发现与上次查询一致
即事务在未提交的情况下,另外一个事务中是查询不到修改的数据
事务在提交的情况下,另外一个事务中是查询不到修改的数据
串行化:
开启任意一个事务就会锁表,开发中很少用到;