数据库隔离级别及实现方式
数
读未提交
事务未提交时也可以读,如果回滚 导致脏读。
读提交
只有已经提交的事务的数据才能读到,通过快照实现。每次Sql语句执行前,先生成一份快照。在innodb中,每行数据都有多个版本,每个版本保存着该版本下数据的值和事务的ID。
事务开始前,先保存当前事务ID和
对于快照有如下几个规则:
①快照创建后,任何提交的事务都读不到
②快照创建前,提交事务的版本可以读到
③当前事务内的更新可以读到
④版本未提交,不能读到
每次都创建一个快照可以保证读到的数据都是最新的,解决了脏读的问题。
但是仍然存在不可重复读的问题。
可重复读
解决不可重复读的问题。
每次事务开始前,只创建一个快照。这样就可以做到重复读某个数据啦。
但是仍然存在幻读问题。此问题在innodb中通过
串行化
所有执行语句相当于串行执行。单线程
浙公网安备 33010602011771号