date: 2019-05-22 16:53:22
事务隔离级别
- 读未提交:一个事务还没提交时,它做的变更就能被别的事务看到
- 读提交:一个事务提交之后,它做的变更才会被其他事务看到
- 可重复读:一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的
- 串行化
事务隔离的实现
在MySQL中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上的最新值,通过回滚操作,都可以得到前一个状态的值。
假设一个值从1被按顺序改成了2、3、4,在回滚日志里面就会有类似下面的记录。每次有事务需要获取历史值时,根据事务的视图,通过回滚日志即可得到历史数据。
这里带来的一个问题就是回滚日志啥时候删除,答案是在没有事务依赖的时候删除。所以长事务是很不推荐的使用。
事务的启动方式
begin/start transaction
commit/rollback
set autocommit=0,这个命令会将这个线程的自动提交关掉