时间:2022-11-12 06:30:02 | 来源:信息时代
时间:2022-11-12 06:30:02 来源:信息时代
事务处理 : 为确保数据库的正确而对数据库事务进行的调度和控制。在多个事务并发执行时,确保数据库正确的功能称为并发控制; 在出现故障的情况下,能将数据库恢复到正确状态的功能称为故障恢复。事务是数据库系统的基本运行单位。在数据库应用中,某些数据库操作之间存在语义上的关联,它们必须作为一个整体存在。事务的执行能够保证数据库从一个正确的状态转移到另一个正确的状态。例如,客户去银行转账,将1000元钱从账户A转到账户B去。这里有两个操作,一是从账户A减去1000元,一是在账户B上增加1000元。显然,这两个操作必须作为一个整体,否则,就可能会出现账不平的情况。
在数据库出现以前,应用程序自身要负责维护操作之间的语义关联性。对于单用户而言,要做到这一点并不困难。例如,可以在修改某个数据之前,首先在磁盘上记录该数据修改前的状态,然后更新数据,如果更新成功了,简单地丢弃保存的修改前的状态就可以了。如果由于种种原因修改失败,只要将事先保存的状态写回到磁盘文件上去就可以了(相当于恢复到修改前的状态)。但是,在一个多用户计算机系统下,由于多个程序之间的相互干扰,使得由应用程序自身来完成这件事情变得不可能。这一需求催生了数据库事务处理技术,以及事务处理理论的发展,成为数据库系统中最为成功的部件之一。随着网络技术的普及,特别是跨数据库平台的分布式应用系统的发展,数据库事务管理已经不再是数据库内部维持数据正确性的工具,也成为跨数据库平台的分布应用保持数据正确性的有效工具,出现了称之为事务中间件的新的软件系统,成为现代信息系统不可或缺的重要组成部件。
事务作为数据库管理系统的核心概念,是维护数据库正确性的基础。因此,无论是理论还是实现技术都得到了完美的发展,为数据库技术的大规模应用提供了坚实的基础。但是,随着技术的进步,事务的概念也一样遇到新的挑战。在数据库事务理论以及事务系统实现方面做出重要贡献并因此获得图灵奖的前微软研究院研究员吉姆·格雷在SIGMOD2006会议报告上举了一个有趣的例子: 一个由两个灯泡组成的红绿灯,现在有两个事务: 事务A将全部的红灯变为绿灯,而事务B相反,将全部的绿灯变为红灯。假定红绿灯的初始状态为左红右绿。那么按照目前的事务理论,在执行了事务A和B之后,正确的结果只能是全部为绿(先执行事务B再执行事务A)或者全部为红(先执行事务A再执行事务B)。为什么不能是左绿右红这样的结果呢?这在现实世界中是完全合理的一个状态,在目前的事务理论下无法得到解释,这个例子为研究者提出了新的挑战。最近,如何将事务的概念引入到互联网环境下的Web服务系统以及网格(gird)系统中,也引起了人们的广泛兴趣,提出了Web服务事务(Web service transaction)和网格事务(grid transaction)等现代事务模型的研究。