并发事务处理带来的问题
相对于串行处理来说,并发事务处理能大大增加数据库资源的利用率,提高数据库系统的事务吞吐量,从而可以支持更多的用户。
并发事务处理也会带来一些问题:
更新丢失
当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每天事务都不知道其他事务的存在,就会发生最后更新覆盖其他事务更新
脏读
不可重复读
幻读
更新丢失通常是应该完全避免的,但防止更新丢失,不能单靠数据库事务控制器来解决,需要应用程序对要更新的数据加必要的锁来解决,因此,防止更新丢失应该是应用的责任
脏读 ,不可重复读,幻读,都是一致性问题,必须由数据库提供一定事务隔离机制,
第一种,数据读取前,对其加锁,防止其他事务对数据进行修改
第二种,不加任何锁,通过一定机制生成一个数据请求时间点的一致性数据快照,并用这个快照来提供一定级别()语句级或事务级()的一致性读取,从用户角度看,好像是数据库提供了多个版本,因此这种技术焦作数据多版本并发控制MVCC