长事务带来的挑战
1. 引言
事务既是一个概念,也是一种不断发展的机制。与传统的短事务不同,长事务通常涉及与数据库进行长达数分钟、数小时甚至数天的交互。长事务的应用范围越来越广泛,可能涉及无共享(shared - nothing)、共享磁盘(shared - disk)或共享一切(shared - everything)等方式,甚至可能同时包含多种方式。
长事务常常包含多个版本的数据。处理长事务的机制必须能够以保证数据库和事务层面的一致性和完整性的方式,跨异构数据库执行操作。这需要满足以下两个方面:
- 在分布式数据库环境中保证全局并发控制和恢复。
- 通过适当的范式支持不同的事务模型和隔离级别。
事务完整性以事务为数据库一致性的单位,确保在出现不一定一致的临时情况时,其影响不仅能以可靠的方式处理,而且对普通用户不可见。这为模拟在线用户与数据库的交互提供了便利,但也表明对复杂事务的支持与自20世纪60年代末以来为借记/贷记类型应用提供的支持有很大不同。借记/贷记是一种短事务类型,强调数据库管理系统(DBMS)处理的读写方面,即快速访问数据库并快速退出。
在复杂事务环境中,通常需要访问多个数据库,这些数据库往往具有不同的数据结构,并且运行在不兼容的操作系统(OS)和DBMS上,分布在广泛的拓扑结构中,且事务执行的组织只能部分控制它们。
2. 事务处理的扩展方面
简单事务不一定只是借记/贷记类型。例如,一个简单事务可能包含以下步骤:
1. 从柜员处接收消息。
2. 查询客户账户。
3. 更新客户账户。
4. 更新柜员表。
5. 更新分行表。