概述:
数据库一般会出现并发执行多个事务,多个事务由同时操作同一批数据,可能会导致脏读、脏写、不可重复读、幻读这些问题。这些问题的本质就是多事务的并发问题,为了解决这些问题,数据库设计了 事务隔离机制、锁机制、MVCC多版本并发隔离控制机制等一系列机制来解决这些问题。
事务及其ACID属性:
事务是由一组sql组成的逻辑处理单元,其具有ACID四个属性;
1.原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都成功,要么全都不成功;
2.一致性(Consistent):在事务开始和结束时,数据都必须保持一致,比如转账业务,转出与转入的数据要保持一致;
3.隔离性(Isolation):事务的并发操作是相互隔离,相互不影响的。
4.持久性(Durable):事务执行完成之后,对数据的修改是持久性的,就算机器发生故障,也不会发生丢失。
并发事务操作带来的问题:
1.脏读dirty reads:事务A读取到事务B已经修改但是尚未提交的数据,如果事务B发生回滚,则存在数据不一致的现象;
2.丢失更新lost update或脏写:对同一条数据进行操修改时,最后修改数据的事务会覆盖其它事务修改的数
版权声明:本文为qq_38166592原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。