为什么需要事务隔离
数据库不会只服务于一个客户端,肯定会出现多个请求同时落到数据库上,即使是同一个客户端也会并发执行多个事务。并发操作mysql的同一批数据的时候就有可能出现数据安全问题,主要有:脏写、脏读、不可重复读、幻读这些问题。本质上这些问题就是多事务并发的问题,那事务隔离就是为了解决这些问题而设计的。
认识多事务并发问题
先了解多事务并发会带来什么问题,问题是什么样子的后面才好解决。主要有以下几个问题:更新丢失(Lost Update)或脏写
当个事务操作同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题。最后的更新覆盖了由其他事务所做的更新。
如上图两个事务都更新id=1,最终持久化的数据只有一个事务的值。假设B事务晚提交,那对A事务来说就莫名奇妙,它更新的50去哪里了?
脏读(Dirty Reads