文章目录
1、事务简介
事务(Transaction)是指用户定义的一个数据库操作序列,这些操作要门全做,要么全都不做,是一个不可分割的整体。 我想,99%的在阐述事务的概念时都会用银行转账的例子,那么我也用这个例子来阐述,因为它更容易理解。在银行转账业务中,顾客认为支票帐户向存储用户的资金转账就好似一个事务,这个动作要么全部执行,要么什么都不执行,如果转出用户在转账过程中他的金额成功减少了,但是收款方并没有收到,如果出现问题就会导致A的白花花的银子确实减少了,但是B的帐户确没有多出的银子,这就出现了无缘无故A的前少了的情况。因此在数据库系统中对事务的控制非常重要。
事务分为隐形事务和显示事务,DBMS按照默认规定将一条sql语句认为是一条隐式事务;而显式事务需要通过sql语句显式指定。
一般来讲,事务具有以下4个特征,简称为ACID:
- 原子性(Atomicity): 指事务是数据库的逻辑工作单位,事务中的所有操作,要么全做,要么全部不做。
- 一致性(consistency): 当数据库中只包含成功事务的提交结果时,就说数据库处于一致性状态。什么是不一致的状态呢?也就是说在执行事务时,假如由于断电等原因,事务中的一些操作已经被写入物理数据库,而一些操作没有被写入,那么此时就处于不一致的状态。
- 隔离性(Isolation): 指数据库中一个事务在执行过程中不能受到其他事务的干扰,该事务的内部操作及数据对象的使用对其他事务是隔离的。
- 持续性(Durability): 指事务一旦提交,对数据库所做的更改就是永久的,这是保证数据库数据安全的保证。
2、并发控制
在数据库中,串行执行的方式就意味着,一个事务必须等到另一个事务结束后才能执行,这种执行方式使数据库的系统资源得不到更好地发挥不能发挥数据库共享资源的特点。
当使用并发的方式执行事务时,可能存在不同的事务同时存取同一个数据对象的情况,这样就可能造成,读取或写入不正确的数据,破坏数据库的一致性。因此,必须提供并发的控制机制,来防止这些情况的发生,并发控制是DBMS性能的重要标志。一般来讲并发可能会发生3种情况导致数据库的一致性被破坏,分别为:丢失修改,不可重复读,读 “脏“数据。
- 丢失修改(Lost Update): 指两个事务T1和T2读入同一数据并进行修该,T2提交的结果破坏了T1提交的修改,我们用一个图来说明