【第22期】观点:IT 行业加班,到底有没有价值?

数据库理论(2)之数据库事务

转载 2016年08月31日 16:45:51
事务时是指用户在进行数据库操作时的一个数据库操作序列。对于该操作序列中的操作,要么全部执行,要么全都不执行,所有的操作都是一个整体,不可分割。

1、事务的概念
事务是一个操作集合,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
典型的例子就像从网上银行系统的帐户A转帐到帐户B,它经过两个阶段:a.从帐户A取出款项。b.把款项放入帐户B中。这两个过程要么同时成功,要么同时失败,这一系列的操作就被称为事务性(Transactional)操作。
与事务相关的概念有:事务提交和事务回滚。
事务提交:将事务中对数据的更新提交到数据库中,如果执行正常则事务结束,否则发生异常时,事务将回滚,将数据库状态还原到事务提交之前的状态。
事务回滚:主要发生于事务提交失败的情况下,中止事务并还原数据库状态。

2、事务的特性
事务具有4个特性:简称ACID特性。
a、原子性(Atomicity):当事务结束的时候,所有的资源状态都被视为一个操作,这个操作要不同时成功,要不同时失败。
b、一致性(Consistency):操作完成后,所有数据必须符合业务规则,否则事务必须中止。因此,数据中只包含事务提交成功的结果,这时事务处于一致性状态中。如果在提交事务时,因故障而中止,这些未完成的事务可能有些数据修改已经执行,而有些数据还没有执行,这时数据库处于不一致状态。
c、隔离性(Isolation):事务以相互隔离的方式执行,事务以外的实体无法知道事务过程中的中间状态。
d、持续性(Durability):事务一旦提交,其对数据库中的数据改变是永久的。

3、事务的特性被破坏的原因
a、多个事务并发运行,事务之间的操作交叉执行;
b、事务在执行的过程中被强行中止。

举报

相关文章推荐

sqlserver2008 R2 数据库事务日志已满

报错:数据库 .... 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的   log_reuse_wait_desc 列   处理办法: --将数据库...
  • angugu
  • angugu
  • 2012-06-28 15:22
  • 5836

数据库事务2

事务场景是这样的:对于同一个银行帐户A内有200元,甲进行提款操作100元,乙进行转帐操作100元到B帐户。如果事务没有进行隔离可能会并发如下问题:1、第一类丢失更新:首先甲提款时帐户内有200元,同时乙转帐也是200元,然后甲乙同时操作,甲操作成功取走100元,乙操作失败回滚,帐户内最终为200元,这样甲的操作被覆盖掉了,银行损失100元。2、脏读:甲取款100元未提交,乙进行转帐查到帐户内剩有100元,这是甲放弃操作回滚,乙正常操作提交,帐户内最终为0元,乙读取了甲的脏数据,客户损失100元。3、虚读:和脏读类似,是

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

sqlserver2008 R2 数据库事务日志已满

报错:数据库 .... 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的   log_reuse_wait_desc 列   处理办法: ...

DB2数据库事务日志已满问题解决方案

本系列文章主要介绍数据库管理员(DBA)在日常维护中遇上一些比较紧急的情况如何处理,本篇主要介绍DB2交易日志存储空间满问题如何处理。 1、数据库事务日志的最大大小 数据库事务日志的最大大小由数据

J2EE -- 数据库事务处理的实现

JavaBeanJavaBean是用Java语言编写的与平台无关的组件。它是描述Java的软件组件模型,有点类似于Microsoft的COM组件的概念。在 Java模型中,通过JavaBean可以无限...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)