2.5 原子事务处理

合集下载

数据库事务处理的基本概念与实现方式

数据库事务处理的基本概念与实现方式

数据库事务处理的基本概念与实现方式概念介绍:数据库事务是一系列数据库操作的逻辑单元,这些操作要么全部成功执行,要么全部不执行。

事务能够确保数据的一致性、可靠性和可恢复性。

事务的概念是数据库管理系统(DBMS)中非常重要的一个概念,它属于数据操作语言(DML),负责对数据库中的数据进行读写操作。

事务具备 ACID 特性:1. 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部执行失败,不存在部分操作成功和部分操作失败的情况。

如果事务中的任意操作执行失败,所有的操作都会被回滚到事务开始前的状态。

2. 一致性(Consistency):事务的执行保证数据的一致性。

在事务开始前和结束后,数据库必须保持一致性状态,即从一个一致的状态转变为另一个一致的状态。

3. 隔离性(Isolation):每个事务的执行都是相互隔离的,一个事务执行时不应该被其他事务干扰。

事务的隔离性保证了多个事务并发执行时的数据不会混淆。

4. 持久性(Durability):事务完成后,其所做的改变将一直保存在数据库中,并且不能被回滚。

实现方式:事务的实现方式主要有两种:基于日志(log-based)和基于锁(lock-based)。

1. 基于日志的事务处理:在这个实现方式中,每个事务在执行过程中会生成一系列操作日志,这些日志用于记录事务所做的所有修改。

当事务提交时,这些操作日志将被持久化写入硬盘。

如果事务在执行过程中出现错误,可以通过回滚日志来撤销已经做出的修改。

这种方式的主要缺点是需要频繁的磁盘写入,对于写密集型的应用来说,性能可能受到影响。

2. 基于锁的事务处理:在这个实现方式中,事务执行过程中需要获取相应的锁来保证数据的一致性和隔离性。

当事务要修改某个数据时,会先申请该数据的锁,如果其他事务已经获取了相同的锁,则当前事务会等待。

在事务执行完成后,会释放所持有的锁。

这种方式需要较少的磁盘写入,适用于并发度较高的应用。

zope默认是以8080端口运行http服务,以8021端口运行ftp服务

zope默认是以8080端口运行http服务,以8021端口运行ftp服务

zope默认是以8080端口运行http服务,以8021端口运行ftp服务。

为了以80和21端口运行以上服务,需以root用户来运行zope,因为一般用户无法使用1024以下的端口。

Zope2学习笔记整理:Jims of 中国开源项目<jims.yang@>Copyright © 2005 本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。

发布时间:2005年04月20日更新时间:2005年09月09日Abstract本笔记汇集我在学习Zope2时积累的知识,内容的来源主要是网络和自已的学习心得。

Table of Contents1. Zope基础架构介绍2. Zope产品安全设置3. 备忘录4. Zope产品4.1. mxmCounter计数器4.2. CMFPhoto和CMFAlbum图片集4.3. ZMySQLDA---MySQL数据库连接适配器4.3.1. 安装4.3.2. 建立一个MySQL连接4.4. Coreblog4.5. Squishdot4.6. 使用LDAPUserFolder5. Zope How-to5.1. 如何以root用户在80端口运行zope?Chapter 1. Zope基础架构介绍Zope系统基础架构包括以下几大部份:•ZServerZServer基于Medusa Server(/medusa),是一个Web服务器,能处理各种Internet请求,如Http、Ftp等。

•ZPublisherZope是一个对象发布系统,ZPublisher负责对象的查找和发布。

也就是根据ZServer传过来的请求,在ZODB数据库里查找对象,并把找到的对象返回给ZServer。

•Transaction ManagerZope支持原子事务处理,对于一个原子处理操作,要么成功,要么失败,回滚到初始状态,就好象关系数据库中的事务处理一样。

事务处理的四个基本特性是什么?

事务处理的四个基本特性是什么?

事务处理的四个基本特性是什么?在计算机领域,事务处理是一种重要的数据管理技术,它保证了数据的一致性和可靠性。

在进行事务处理时,有四个基本特性需要遵循,即原子性、一致性、隔离性和持久性。

本文将为您详细解释这四个基本特性。

一、原子性事务的原子性是指事务中的所有操作要么都成功执行,要么都不执行。

也就是说,如果事务中的任何一个操作失败,那么整个事务都会回滚到初始状态,所有的操作都不会对数据库产生影响。

原子性保证了数据库的完整性,确保了事务的一致性。

原子性通过使用事务日志来实现。

事务日志记录了所有的事务操作,可以用来在事务失败时回滚操作。

二、一致性事务的一致性是指事务执行后,数据库从一个一致性状态转变为另一个一致性状态。

也就是说,事务执行前后,数据库的完整性约束不会被破坏。

例如,如果某个表的主键不能重复,那么在事务执行后,表中的数据仍然满足这个约束。

一致性通过在执行事务前进行预检查来实现。

预检查可以确保事务执行后数据库的完整性不会被违背。

三、隔离性事务的隔离性是指多个事务并发执行时,每个事务都感觉不到其他事务的存在。

也就是说,每个事务在执行过程中看到的数据都是一致和可靠的。

隔离性保证了数据的并发访问的正确性。

隔离性通过使用锁机制来实现。

锁机制可以控制对共享资源的访问,防止多个事务同时对同一资源进行修改,从而保证了数据的隔离性。

四、持久性事务的持久性是指事务一旦提交,其对数据库的改变是永久性的。

即使系统发生故障,如断电或崩溃,事务提交的改变不会丢失。

持久性保证了数据的可靠性。

持久性通过使用事务日志和数据的持久存储来实现。

事务日志记录了事务的操作,而数据的持久存储则保证了数据在系统故障时的恢复。

综上所述,事务处理的四个基本特性是原子性、一致性、隔离性和持久性。

这些特性保证了事务的可靠性和数据的一致性,是数据库管理中非常重要的概念。

在日常的开发和运维工作中,我们需要充分理解和应用这些特性,以确保系统的正常运行和数据的安全性。

如何使用事务处理实现批处理操作(四)

如何使用事务处理实现批处理操作(四)

在计算机领域,批处理操作是一种常见的任务处理方式,它可以同时处理多个任务,提高效率。

然而,批处理操作的实现并不是一件容易的事情。

幸运的是,我们可以利用事务处理来简化和优化这个过程。

一、什么是事务处理?事务处理是一种保证数据完整性和一致性的技术。

它将一系列操作组成一个单元,要么全部成功地执行,要么全部失败回滚。

在批处理操作中,事务处理可以确保每个任务的执行都是可靠和一致的。

二、使用事务处理的好处1.原子性:事务处理将一系列操作作为一个原子单元执行,要么全部成功,要么全部失败。

这样可以避免在操作过程中出现不一致的情况。

2.一致性:事务处理可以确保每个操作都是按照预期方式执行的。

如果其中一个操作失败,整个事务将被回滚,回到之前的一致状态。

3.持久性:一旦事务操作成功,它们就会被永久保存在数据库中。

这意味着即使在系统故障或停电的情况下,数据也能得到保护,并能够恢复到之前的状态。

三、实现批处理操作的步骤1.定义事务边界:首先,需要明确哪些操作应该被视为一个事务。

这取决于具体的需求和业务逻辑。

将相关的操作划分为一个事务单元,确保它们可以一起执行。

2.开始事务:在开始执行一系列操作之前,需要明确地开始一个事务。

这可以通过调用适当的命令或方法来实现。

3.执行批处理操作:在事务开始后,可以依次执行每个操作。

这些操作可以是对数据库进行的增删改查操作,也可以是其他与业务相关的操作。

4.异常处理:在执行操作的过程中,可能会出现异常情况。

在这种情况下,可以通过捕获异常并回滚事务来处理异常。

这可以确保整个事务保持一致性和可靠性。

5.提交事务:一旦所有操作都顺利执行完毕,可以选择提交事务。

这将确保所有操作的结果被永久保存,并且数据库处于一致状态。

四、案例分析假设我们需要在一个在线商城中批量更新商品价格。

我们可以使用事务处理来实现这个批处理操作。

首先,我们定义事务边界。

在这个案例中,每个商品的价格更新将被视为一个事务单元。

接下来,我们开始事务,并执行批处理操作。

操作系统中的原子操作

操作系统中的原子操作

操作系统中的原子操作原子操作是操作系统中的一个重要概念,它指的是在执行过程中不可被中断或者不可分割的操作。

原子操作的特性保证了在多线程或者并发执行的情况下,对共享资源的操作能够正确、完整地进行。

本文将从不同角度介绍原子操作的概念、作用和实现方式。

一、原子操作的概念原子操作是指在执行过程中不可被中断或者不可分割的操作。

简单来说,它要么执行完全,要么不执行,不存在执行了一部分的情况。

原子操作的特性使得它能够在多线程或者并发执行的情况下,保证对共享资源的操作能够正确地进行。

二、原子操作的作用1. 保证数据的一致性:在多线程或者并发执行的环境下,原子操作可以保证对共享资源的操作是原子的,即要么全部执行成功,要么全部不执行。

这样可以避免出现数据不一致的情况,保证数据的正确性和完整性。

2. 防止竞态条件:竞态条件指的是多个线程同时对共享资源进行读写操作,导致结果的不确定性。

原子操作能够避免竞态条件的发生,通过对共享资源的操作进行原子化,保证每个操作的完整性,从而避免了竞态条件带来的问题。

三、原子操作的实现方式1. 原子指令:某些处理器提供了一些原子指令,可以直接在硬件级别执行原子操作。

这些指令通常是具有原子性的,保证了对共享资源的操作不会被中断或者分割。

2. 锁机制:通过锁机制可以实现原子操作。

常见的锁机制有互斥锁、读写锁等。

当一个线程获得了锁之后,其他线程将无法获得该锁,从而保证了对共享资源的操作是原子的。

3. 原子变量:原子变量是一种特殊的变量类型,提供了一些原子操作的接口。

这些接口可以保证对原子变量的操作是原子的,从而避免了竞态条件的发生。

四、原子操作的应用场景1. 信号量和互斥锁:在多线程或者并发执行的环境下,通过使用信号量或者互斥锁来实现对共享资源的原子操作。

通过对临界区的操作进行原子化,可以保证了操作的正确性。

2. 原子计数器:在计数器的应用场景中,通过使用原子操作来实现对计数器的操作。

这样可以避免多个线程同时对计数器进行操作导致的计数不准确的问题。

单核多核CPU的原子操作

单核多核CPU的原子操作

单核多核CPU的原子操作原子操作是指一个操作不能被中断,在执行过程中不会被其他操作干扰。

在单核和多核CPU中,实现原子操作的方法略有不同。

本文将详细介绍单核和多核CPU中的原子操作。

首先,我们来讨论单核CPU中的原子操作。

在单核CPU中,实现原子操作的一种常见方法是使用互斥锁。

互斥锁是一种同步机制,用于保护共享资源,确保在任意时间点只有一个线程可以访问该资源。

当一个线程需要访问共享资源时,它必须先获得互斥锁,然后执行操作,最后释放互斥锁。

在获得锁之前,其他线程需要等待锁的释放。

互斥锁可以保证操作的原子性,因为当一个线程获得锁后,其他线程无法访问该共享资源,从而避免了竞争条件的发生。

另一种实现原子操作的方法是使用原子指令。

原子指令是一种特殊的CPU指令,它能够在一条指令执行的过程中保证操作的原子性。

例如,x86架构上的XCHG指令可以原子地交换两个操作数的内容。

原子指令保证了操作的原子性,因为它们在执行时会阻止其他指令的执行,直到完成操作。

然而,原子指令的使用需要谨慎,因为过多的使用会导致性能下降。

接下来,我们来讨论多核CPU中的原子操作。

缓存一致性协议是一种硬件机制,用于维护多个CPU的缓存一致性。

当一个CPU写入共享变量时,缓存一致性协议会将该写操作传播到其他CPU的缓存中,从而保证所有CPU都能看到最新的值。

缓存一致性协议可以确保原子操作的原子性,因为它可以阻止其他CPU在操作进行期间访问该共享变量。

自旋锁是一种多核CPU中常用的锁机制。

当一个线程需要访问共享资源时,它会尝试获取锁。

如果锁被其他线程持有,则当前线程会一直等待,直到锁被释放。

自旋锁是一种忙等的机制,它会一直检查锁的状态,直到锁被释放。

自旋锁可以保证原子操作的原子性,因为其他线程不能同时持有同一个锁。

CAS操作是一种常见的原子操作,它可以在一个步骤中进行读-改-写操作。

CAS操作具有两个输入:要修改的内存位置的值和期望的值。

CAS操作会比较内存位置的当前值和期望的值,如果相等,则将新的值写入该内存位置。

cpu原子操作实现原理

cpu原子操作实现原理

cpu原子操作实现原理
CPU原子操作是指在一个CPU核心上执行的操作是不可中断的,也就是说,在该操作完成之前,不会有其他进程或线程访问或修改该操作涉及到的数据。

这种操作通常用于多线程或多进程之间共享数据时的同步和互斥。

实现原理主要是通过硬件的方式来实现的。

在现代的CPU中,通常都有一些特殊的指令,例如xchg、lock xchg、lock cmpxchg、lock add等,这些指令可以保证在执行期间不会被中断。

xchg指令是一种交换操作,他可以将一个寄存器中的值与某个内存地址的值交换,这个操作是原子的。

lock xchg指令可以保证在执行期间,其他进程或线程不能访问或修改该指令所涉及到的数据。

它是通过在总线上加锁的方式来实现的。

lock cmpxchg指令可以解决多线程共享数据时的原子性问题。

它的作用是比较内存中的值是否与预期值相等,如果相等,则将新值写入内存,否则不做任何操作。

这个操作是原子的。

lock add指令也可以保证在执行期间,其他进程或线程不能访问或修改该指令所涉及到的数据。

它的作用是将一个寄存器中的值加上一个常数值,并将结果写回寄存器中。

这个操作是原子的。

总之,CPU原子操作是通过硬件的方式来实现的,这些指令可以保证在执行期间不会被中断,从而保证多线程或多进程之间共享数据时的同步性和互斥性。

数据库管理系统的事务处理

数据库管理系统的事务处理

数据库管理系统的事务处理在计算机科学领域,数据库管理系统(DBMS)被广泛应用于数据存储和组织。

作为关键的数据管理工具,DBMS不仅需要高效地存储和检索数据,还需要保证数据的一致性和完整性。

为了实现这一目标,DBMS采用了事务处理的机制。

一、事务处理的概念事务是指对数据库的一系列操作的逻辑单元,它要么全部执行,要么全部回滚不执行。

事务处理是指对事务的执行过程,它确保了多个并发事务之间的数据一致性和隔离性。

二、事务处理的特性1. 原子性(Atomicity):一个事务要么全部执行,要么全部失败。

如果其中任何一个操作失败,整个事务都会被回滚到起始状态。

2. 一致性(Consistency):事务执行的结果必须使数据库从一个一致状态转换到另一个一致状态。

事务执行过程中的中间状态是不允许的。

3. 隔离性(Isolation):每个事务的执行应该与其他并发事务相互隔离。

其中任何一个事务对数据的修改在提交前对其他事务是不可见的。

4. 持久性(Durability):一旦事务被提交,其更改将永久保存在数据库中。

三、事务处理的基本操作1. 开始事务(BEGIN):标志着事务的开始。

在执行其他操作之前,必须先开始一个事务。

2. 执行操作:对数据库进行读取、插入、更新或删除等操作。

3. 提交事务(COMMIT):将事务中的操作永久保存到数据库中。

4. 回滚事务(ROLLBACK):取消未提交的事务,将数据库恢复到事务开始的状态。

四、事务的并发控制并发是指多个事务同时执行的情况。

在并发环境下,事务之间的交错执行可能导致数据的不一致性。

为了解决这个问题,DBMS使用并发控制机制来保证数据的一致性和隔离性。

1. 锁定机制:通过给数据加锁来实现并发控制。

当一个事务对某个数据进行更新时,会将该数据进行锁定,其他事务必须等待锁的释放才能对该数据进行操作。

2. 并发隔离级别:定义了事务之间的隔离程度。

常见的隔离级别有读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当前如何在线更新数据库的银行应用的例子。 客户通过带有调制解调器的PC机连接到银行,想将 一个帐户下的钱取出再存入另一帐户。操作通过下面 两步执行:

提取(金额,帐户1)。 存入(金额,帐户2)。


如果电话连接在第一步之后第二步之前中断,那么第 一个帐户已被取出而第二个帐户却没有存入。钱就消 失在了未知的空间中。 将这两个操作组成一个原子事务可以解决这个问题。 要么两个都执行,要么一个也不执行。 关键是事务执行失败后能返回到最初状态。这种能力 是原子事务必须提供的。
4
2.5.1原子事务简介(续)

计算机系统中对事务的使用可以回溯到20世纪60年代。

这种设计的最大优点:对任何原因引起的运行错误, 所有的磁带都可以倒卷(rewound),其工作可以毫无 损失的重新开始。老式的磁带系统具有了原子事务要 么全有要么全无的特性。
5
2.5.1原子事务简介(续)

32
一、私有工作空间(续)


第二个优化方法大大减少了拷贝工作。 该方法并不是将全部文件都拷入私有工空间, 而只将其索引拷入。
33
一、私有工作空间(续)


通过私有索引,文件可以按 通常的方式读取。 因为索引中包含有文件开始 几个块的磁盘地址。
34
一、私有工作空间(续)



当一个文件块第一次被修改时, 将会生成该块的拷贝,其地址也 将被插入索引中,然后就可以在 不影响原始块的情况下更新这个 块。 添加块也是用这个方法解决的。 新块有时也称作影象块(shadow block)。 如图所示,运行事务的进程看到 了被修改的文件,但是其它进程 看到的仍是原来的文件。
27

四、嵌套事务(续)

由于事务可以嵌套任意多层,因此需要管理措 施以使其一切正常。但语义却是清楚的。




当任何事务或子事务开始的时候,在概念上给予它 一个整个系统全部对象的私有拷贝,可以按照其意 愿进行操作。 如果事务被终止,那么它的私有空间就会消失,就 象事务从来都没有存在过一样。 如果事务提交了,那么它的私有空间就会取代父辈 的空间。 因此如果一个子事务提交后又开始了一个新的子事 务,那么它就可以看到第一个子事务的结果了。
假设某个事务要在一个10字节的文件末尾 添加数据。


如果在事务处理过程中其它进程读取了这个文 件,那么无论该事务已添加了多少内容,那些 进程看到的只能是10个字节。 如果事务成功结束,这时文件在结束的瞬时增 长到了新的大小,无论有多少个操作存在,都 不会有中间状态。
19
一致性

第二个特性说明事务是一致的,这意味着如果 系统拥有某种必须经常保持的不变性,那么一 旦在事务开始之前保持有这样的性质,则事务 结束后该性质就还应该存在。
21
独立性—例

下面三个事务被三个独立的进程同时执行。

如果它们顺序执行,那么X的最终结果应该是 1,2或3,取决于哪一个事务最后运行(X可 以是一个共享变量,一个文件或其他对象)。
22
独立性—例

在d中我们看到了称之为调度表的不同次序,其中事务 可以是交错的。



调度1是真正串行的,即事务严格按顺序来运行,因此 它满足连续性的定义。 调度2不是串行的,但是它也是合法的,因为它返回的X 值与严格串行返回的值一致。 第三个调度是非法的,因为它将X的值置成了5,这是顺 序执行所不可能产生的。

先写写前日志再修改!
37
二、写前日志—例子


例如在一个银行系统中,最关键的不变性是资金守 恒规则。 在任何内部转帐之后,银行的资金帐目应与转帐前 保持一致,但是在事务执行的短暂时刻内,这种不 变性会受到损害。然而事务结束之后,这种损害就 没有了。
20
独立性


第三个特性说明事务是独立的或连续的。 这意味着如果两个或两个以上的事务在同时运 行,那么对它们自己和其它进程来说,最终结 果看起来就象是所有的事务是按某种次序(依 赖于系统)顺序运行的。

BEGIN_TRANSACTION:标记一个事务的开始。 END_ TRANSACTION:结束事务并设法提交。 ABORT_ TRANSACTION:取消事务;恢复旧值。 READ:从一个文件(或其它对象)读取数据。 WRITE:将数据写入一个文件(或其它对象)。
12
二、事务原语(续)

存储器有三种分类。



RAM存储器,当电源出错或机器崩溃时会丢失 信息。 磁盘存储器,它不受CPU错的影响,但磁头错 会导致信息丢失。 稳定存储器(stable storage)。它不受洪水地震 之类大灾难之外的任何其它错误的影响。
9
稳定存储器的实现

稳定存储器可以通过两个 普通磁盘来实现。

28
2.5.3实现

经常使用的有两种方法:

私有工作空间 写前日志
29
一、私有工作空间

在进程开始一个事务的时刻给它分配一个私有 工空间。


分配一个包含了所有需要访问的文件(和其它对象) 的私有工作空间。 在事务提交或终止前所有的读写操作都是在私有工 空间而不是在通常所说的真正的文件系统中进行的。 把所有内容都拷贝到一个私有工空间,其代价是难 以承受的,但存在一些优化使得该方法更可行些。
15
二、事务原语-例子(续)

现在假设前两条路线已经预定成功,但是第三 条已经定满了。那么事务就会因此而中止,前 两个预定的结果也将被取消——售票系统的数 据库恢复到了事务开始前的状态,就像什么也 没有发生一样。
BEGIN_TRANSACTION reserve 保定-石家庄 reserve 石家庄-广州 广州-汕头 full →ABORT _ TRANSACTION END_TRANSACTION
6
2.5.2事务模型

事务模型的前提假设:


假设系统由一些相互独立的进程组成,每个 进程都会随机出错。 假定通信错误已经被底层软件透明地处理

尽管通信一般来说是不太可靠的,消息会丢失, 但是底层可以采用超时重发协议恢复丢失的消息。
7
事务模型 稳定存储 器
事务原语
事务特性
嵌套事务
8
一、稳定存储器
14
二、事务原语-例子

考虑到保定火车站买一张从保定到汕头的火车。 由于没有直达火车,只能买联票。保定石家 庄;石家庄广州;广州汕头。下面通过3个 操作预定了这3条独立的路线的座票。
BEGIN_TRANSACTION reserve 保定-石家庄 reserve 石家庄-广州 reserve 广州-汕头 END_TRANSACTION
36
二、写前日志

另一个实现事务的常用方法是写前日志 (Writehead log)。有时也称为计划列表、意向 表 (intentions list)。


使用这种方法时,文件会真正被修改。但是在改动 任何块之前,将一条记录写入稳定存储器的写前日 志中,以判断是哪一个事务在进行修改操作,哪一 个文件的哪一块被改动了,旧值与新值分别是什么。 只有当日志被成功的写入之后才可以进行文件的修 改。
35
一、私有工作空间(续)



在一个更复杂的事务中,私有工 空间可能包含了大量的文件而不 仅仅是一个。 如果事务异常终止,那么私有工 空间就会被删除,它所指向的所 有私有块也将被释放回自由列表 中。 如果事务成功结束,那么私有索 引将会被自动移到父辈的工作区 中,如图所示。不需要的块将它 放回自由列表中。

如图所示,驱动器2上的每 一块是驱动器1上相应块的 精确拷贝。 当更新一个块时,首先更新 并检查驱动器1上的块,然 后驱动器2上的块。
10
一、稳定存储器(续)

稳定存储器的价值: 它很适合于需要高度容错的应用,例如原子事 务。
11
二、事务原语

使用事务编程需要由操作系统提供或者由语言 运行系统提供特殊原语,例如:
23
独立性(续)

ห้องสมุดไป่ตู้
为保证独立的操作正确交替执行是系统的责任。 通过给予系统按照自己需要选择操作执行顺序 的自由——假设它得到的答案是正确的——我 们消除了程序员自己进行互斥处理的需要,因 此简化了编程。
24
持久性

第四个特性说明事务是持久的。

这是指这样一个事实,即一旦一个事务提交, 无论发生什么,这个事务都会向前进行,结 果不会再变了。提交之后发生的任何错误都 不可能使结果取消或丢失。
分布式操作系统
2.5 原子事务处理
1
2.5 原子事务处理



迄今为止研究的所有同步技术在其本质上来说 都是处于底层的,比如信号量。这些技术需要 程序员密切注意互斥、临界区管理、死锁预防、 崩溃恢复等问题的细节。 需要的是更高层次的抽象,也就是隐藏技术问 题,允许程序员将精力集中在算法和进程如何 并行运行上。 这样的抽象是存在的,而且被广泛应用在分布 式系统中。我们称其为原子事务,或简称为事 务。术语原子操作也被广泛使用。

这几个属性通常按其首字母简称为ACID。
17
原子性


所有事务具有的第一个特性是原子性。 这个特性确保了每个事务要么全部发生,要么 全部不发生。 如果发生,就是不可分割的,瞬间的操作。 当一个事务处在处理过程中时,其它进程(无 论是否与事务有关)都不能看到任何中间状态。
18
原子性—例


更精确的原语列表取决于事务中正在使用的对 象类型。


在一个邮件系统中,可能有发送、接收以及转发邮 件等原语。 而在一个帐目系统中可能会有很大的不同。
相关文档
最新文档