Chinaunix首页 | 论坛 | 博客
  • 博客访问: 444132
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类:

2008-06-17 23:33:56

事务的概念

从数据库用户的观点看,数据库上一些操作的集合通常被认为是一个独立单元。例如:从帐户A到帐户B的资金转帐是一次独立操作。在数据库系统中,这个操作需要由以下两个步骤来完成:

1)从帐户A中减去金额

2)向帐户B中增加对应金额

显然,这两个操作步骤要么全部发生,要么由于出错而全不发生。保证这一点非常重要,我们无法接受资金从帐户A转出而没有存入帐户B的情况。

事务(transaction),也被称为交易、工作单元(unit of work),是构成单一逻辑工作单元的操作集合。不论有无故障,数据库系统必须保证事务的正确执行——或者执行整个事务,或者属于该事务的操作一个也不执行。上面资金转帐的两个操作步骤就必须放在一个事务中来完成。此外,数据库系统还必须以一种能避免数据不一致的方式来管理事务的并发执行。

数据库系统中对数据的所有处理都以事务的形式提交,事务的操作集合中可以包含一个,也可以包含多个操作。用户在编写应用程序时,通常使用形如begin transactionend transaction的标识语句,来界定事务的起始和终止。如果没有使用事务标识,缺省情况下数据库系统把单个操作看作一个事务。

和事务相关的其它概念,包括:事务提交、事务回滚、数据落实等。

事务提交,就是事务中所有操作都正确完成后,向系统和发起事务请求用户表明事务已经成功完成的过程。事务可以成功地提交,表明由该事务引起的所有更新已经作用于数据库。事务也可能由于系统故障等原因而提交失败,这就需要事务的回滚。

事务回滚,就是将事务中已经执行的操作反方向地执行,使数据库恢复到事务执行前的状态,就好象事务没有被运行过一样。在事务中操作处理失败或者事务没能成功提交,就需要回滚事务,以保证数据库中数据的一致性。

事务的更新处理都是在内存中完成。在事务被提交之前,内存中这些被更新的数据都没有得到最后确认,这些更新可能会发生,也可能由于事务失败而回退,我们称这些数据为未落实数据。一旦事务成功提交,这些更新被写入磁盘、得到永久性的确认,我们称之为数据落实。

阅读(805) | 评论(0) | 转发(0) |
0

上一篇:6.1.2 事务的特征

下一篇:6.1 事务概述

给主人留下些什么吧!~~