(转发)事务的概念、类型和四个特征(ACID)

原文:https://www.cnblogs.com/Mryang-blog-cn/p/SQLserverSHIWU.html

1.事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。

通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。

2.事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。

COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。

ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。

3.事务类型

A:手动事务
        手动事务允许显式处理若干过程,这些过程包括:开始事务、控制事务边界内的每个连接和资源登记、确定事务结果(提交或中止)以及结束事务。
        尽管此模型提供了对事务的标准控制,但它缺少一些内置于自动事务模型的简化操作。例如,在手动事务中数据存储区之间没有自动登记和协调。
        此外,与自动事务不同,手动事务中事务不在对象间流动。
        如果选择手动控制分布式事务,则必须管理恢复、并发、安全性和完整性。也就是说,必须应用维护与事务处理关联的 ACID 属性所需的所有编程方法。

B:自动事务
        .NET 页、XML Web services方法或 .NET Framework 类一旦被标记为参与事务,它们将自动在事务范围内执行。
        您可以通过在页、XML Web services 方法或类中设置一个事务属性值来控制对象的事务行为。特性值反过来确定实例化对象的事务性行为。
        因此,根据声明特性值的不同,对象将自动参与现有事务或正在进行的事务,成为新事务的根或者根本不参与事务。
        声明事务属性的语法在 .NET Framework 类、.NET 页和 XML Web services 方法中稍有不同。
        声明性事务特性指定对象如何参与事务,如何以编程方式被配置。
        尽管此声明性级别表示事务的逻辑,但它是一个已从物理事务中移除的步骤。
        物理事务在事务性对象访问数据库或消息队列这样的数据资源时发生。
        与对象关联的事务自动流向合适的资源管理器,诸如 OLE DB、开放式数据库连接 (ODBC) 或 ActiveX 数据对象 (ADO) 的关联驱动程序在对象的上下文中查找事务,
        并通过分布式事务处理协调器 (DTC) 在此事务中登记。整个物理事务自动发生。

4.事务的特性(ACID特性)

A:原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

B:一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant).
以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,
比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性.

C:隔离性(Isolation)
一个事务的执行不能被其他事务干扰。隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,
执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,
必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

D:持续性/永久性(Durability)
    一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,不会被回滚。

5.例子:

A:比如说在网上转帐从A账户往B账户转100元,需要执行两个操作A账户减少100元,B账户增加100元。
这两个操作如果只执行了第一个操作,那么你是不会答应的,因为你损失了100元,而如果只执行了第二个操作,那么银行也不会答应。
这两个操作要么都同时执行成功,要么都执行失败,否则一个成功,一个失败都是不合理的。
因此将这两个操作放在一个事务中去执行,事务的原子性,保证了要么都执行,要么都不执行。

B:一致性的话,再举个例子,比如说你刷卡买电影票,步骤是这样的,首先营业员先给你打出一张票,然后你刷卡,拿电影票。
这个时候,实际的电影票是资源,而数据库中的电影票是数据。营业员如果帮你打出一张票,这个时候,数据库中电影票实际上数目减一了,
但是如果你刷卡失败了,实际的电影票资源并没有发生改变,这个时候执行回滚操作,恢复到打票之前的数据。这样保证了资源和数据的一致性。

C:隔离性的话,就是两个事务之间的操作相互之间不会影响,即不会发生脏读、不可重复读和幻象。

D:持久性的话比较好理解,就是事务执行成功以后,数据将保存在数据库中不再发生改变。

原文地址:https://www.cnblogs.com/tandi19960505/p/9864163.html

时间: 2024-11-05 20:47:05

(转发)事务的概念、类型和四个特征(ACID)的相关文章

SQL server中事务的四个属性特征(ACID)

事务的概念.类型和四个特征(ACID). 1.事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性. 2.事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束. COMMIT表示提交,即提交事务的所有操作.具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束. RO

事务的四个特征

事务具有四个特征ACID 原子性(Atomicity)事务是最小单元,不可再分. 一致性(Consistency)事务要求所有的DML语句(insert.update.delete)操作的时候,必须保证同时成功或者同时失败. 隔离性(Isolation)一个事务不能影响其他事务的运行. 持久性(Durability)在事务完成(成功提交)之后,该事务对数据库所作的更改将持久的保存在数据库中,并不会被回滚. 注意:InnoDB存储引擎具有的特性:事务.外键约束(级联更新.级联删除) 原文地址:ht

Java事务的概念

一.什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取.事务的正确执行使得数据库从一种状态转换成另一种状态. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolation)和持久性(durability)的缩写事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolation)和持久性(du

数据库事务的概念及其实现原理

目录 前言 1. 认识事务 1.1 为什么需要数据库事务 1.2 什么是数据库事务 1.3 事务如何解决问题 1.4 事务的ACID特性以及实现原理概述 2.并发异常与并发控制技术 2.1 常见的并发异常 2.2 事务的隔离级别 2.3 事务隔离性的实现--常见的并发控制技术 3. 故障与故障恢复技术 3.1 为什么需要故障恢复技术 3.2 事务的执行过程以及可能产生的问题 3.3 日志的种类和格式 3.4 日志恢复的核心思想 3.5 事务故障中止/正常回滚的恢复流程 3.6 系统崩溃时的恢复过

4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别

 事务提交过程 事务 基本概念 概念:一个或者多个DML语言组成 特点:要么都成功,要么都失败 事务的隔离性:多个客户端同时操作数据库的时候,要隔离它们的操作, 否则出现:脏读  不可重复读  幻读 Oracle默认情况下,事务是打开的 commit案例: SQL> create table t1(tid int,tname varchar2(20)); 表已创建. SQL> select * from tab; TNAME                          TABTYPE

9-02事务的概念及特性

事务的概念: 事务的作为单个逻辑工作单元一系列操作及多个操作作为一个整体向系统提交, 要么都执行,要么都不执行,事务是一个不可分割的单个逻辑单元. 转账过程就是一个事务. 它需要两条UPDATE语句来完成,这两条语句是一个整体. 如果其中一条出现错误,那么整个转账过程也不在执行. 每个账户的余额也会回复到原来的数据. 从而确保转账前与转账后的余额不变. 事务必须具备以下4个属性,简称ACID属性: 原子性: 事务是一个完整的操作,它的各一项操作是不可分的, 要么都执行,要么都不执行. 一致性:

机器学习之(四)特征工程以及特征选择的工程方法

关于特征工程(Feature Engineering),已经是很古老很常见的话题了,坊间常说:"数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已".由此可见,特征工程在机器学习中占有相当重要的地位.在实际应用当中,可以说特征工程是机器学习成功的关键.纵观Kaggle.KDD等国内外大大小小的比赛,每个竞赛的冠军其实并没有用到很高深的算法,大多数都是在特征工程这个环节做出了出色的工作,然后使用一些常见的算法,比如LR,就能得到出色的性能.遗憾的是,在很多的书籍中并没有直接

WWF事务和异常处理类型活动<第四篇>

一.FaultHandler 添加一个工作流图如下: 首先添加一个Seruence,在里面添加3个Code,外面添加一个Code,打开Seruence错误处理,在容器里添加一个faultHandler,在faultHandler里添加一个Code活动. 设置faultHandler的FaultType属性如下 注意要绑定属性. 运行效果: 注意到,如果FaultHandler捕捉了错误,那么Seruence内的其他Code活动都不会再执行,但是Seruence外部的Code会继续执行. 二.Th

LVS概念类型及三种工作模式和十种调度算法介绍

一.LVS概念 LVS(Linux Virtual Server):Linux 虚拟服务器 LVS是个负载均衡设备,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,所以说后端的服务称作real server.LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块)[提示:LVS和iptables不能同时使用]. 二.LVS类型 LB(Load Balancing):负载均衡集群 特性:为了增加能力能力 HA(Hig