数据库事物隔离级别
1、读未提交:就是一个事务可以读取另一个未提交事务的数据
2、读已提交:一个事务要等另一个事务提交后才能读取数据
3、可重复读:一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新
可重复读的隔离级别下使用了MVCC机制,select操作不会更新版本号,是快照读(历史版本);insert、update和delete会更新版本号,是当前读(当前版本)。
注意:MySQL可重复读的隔离级别中并不是完全解决了幻读的问题,而是解决了读数据情况下的幻读问题。而对于修改的操作依旧存在幻读问题,就是说MVCC对于幻读的解决时不彻底的。
示例:
| 事物 1 | 事物 2 |
|---|---|
| begin | begin |
| select * from dept | |
| - | insert into dept(name) values("研发部") |
| - | commit |
| update dept set name="财务部"(工作中如果不想被辞退一定要写where条件) | |
| commit |
根据上面的结果我们期望的结果是这样的:
id name
1 财务部
2 研发部
但是实际上我们的经过是:
4.串行化:一个事务在执行过程中完全看不到其他事务对数据库所做的更新。(事务执行的时候不允许别的事务并发执行。事务串行化执行,事务只能一个接着一个地执行,而不能并发执行)

浙公网安备 33010602011771号