【重学MySQL打卡行动】Day3事务隔离:为什么你改了我还看不

2020-06-21  本文已影响0人  花生无翼

学习内容 : 事务隔离级别与实现

一、隔离性与隔离级别

1.事务的特性:原子性、一致性、隔离性、持久性
2.多事务同时执行的时候,可能会出现的问题:脏读、不可重复读、幻读
3.事务隔离级别:读未提交、读提交、可重复读、串行化
4.不同事务隔离级别的区别:
读未提交:一个事务还未提交,它所做的变更就可以被别的事务看到
读提交:一个事务提交之后,它所做的变更才可以被别的事务看到
可重复读:一个事务执行过程中看到的数据是一致的。未提交的更改对其他事务是不可见的
串行化:对应一个记录会加读写锁,出现冲突的时候,后访问的事务必须等前一个事务执行完成才能
继续执行

二、事务隔离的实现

每条记录在更新的时候都会同时记录一条回滚操作。同一条记录在系统中可以存在多个版本,这就是数据库的多版本并发控制(MVCC)。

三、事务启动方式

显式启动事务语句, begin 或 start transaction。配套的提交语句是 commit,回滚语句是 rollback。
set autocommit=0,这个命令会将这个线程的自动提交关掉。意味着如果你只执行一个 select 语句,这个事务就启动了,而且并不会自动提交。这个事务持续存在直到你主动执行 commit 或 rollback 语句,或者断开连接。

上一篇下一篇

猜你喜欢

热点阅读