数据库事务

来源:互联网 发布:达利制衣 淘宝店 编辑:程序博客网 时间:2024/06/08 19:52

 这段时间面试,由于基础不是特别好,遇到一些要笔试的公司。就会表示出来

今天有人问我,数据库事务 是什么。我只感觉十分熟悉。但是又说不出所以然。回来找了一下,现在整理记录

数据库 事务

1、定义:

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。  事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单 元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

2、属性

原子性

(atomic)(atomicity)
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。

一致性

(consistent)(consistency)
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。

隔离性

(insulation)(isolation)
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修 改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为隔离性,因为它能够重新装载起始数据,并且重播一系列事务,以使数 据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。防止数据丢失

持久性

(Duration)(durability)

事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

3、数据并发的问题

脏读

不可重复读

幻象读

第一类丢失更新

第二类丢失更新

4、数据库锁机制

Oracle数据库常用的5种锁定

行共享锁定:

select for update

lock table in row share mode

行独占锁定

insert update delete

lock table in row exclusive mode

表共享锁定

lock table in share mode

insert update delete

表共享行独占

lock table in share row exclusive mode

表独占

lock table in exclusive mode

 

0 0
原创粉丝点击