数据库隔离级别及实现方式

 

读未提交

事务未提交时也可以读,如果回滚 导致脏读。

 

读提交

只有已经提交的事务的数据才能读到,通过快照实现。每次Sql语句执行前,先生成一份快照。在innodb中,每行数据都有多个版本,每个版本保存着该版本下数据的值和事务的ID。

事务开始前,先保存当前事务ID和

对于快照有如下几个规则:

①快照创建后,任何提交的事务都读不到

②快照创建前,提交事务的版本可以读到

③当前事务内的更新可以读到

④版本未提交,不能读到

每次都创建一个快照可以保证读到的数据都是最新的,解决了脏读的问题。

但是仍然存在不可重复读的问题。

  

 

可重复读

解决不可重复读的问题。

每次事务开始前,只创建一个快照。这样就可以做到重复读某个数据啦。

但是仍然存在幻读问题。此问题在innodb中通过

 

串行化

所有执行语句相当于串行执行。单线程

 

posted @ 2021-03-13 11:02  Coder_Dai  阅读(287)  评论(0)    收藏  举报