作者:Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden, Michael Stonebraker
联机事务处理 (OLTP) 数据库包含一系列针对 20 世纪 70 年代的计算机技术而优化的功能 —— 磁盘 B 树和堆文件、基于锁的并发控制、多线程支持等等。现代处理器、存储器和网络的进步意味着,今天的计算机与 30 年前的计算机大为不同,以至于现在许多 OLTP 数据库都可以放在主存储器,并且大多数 OLTP 事务可以在几毫秒甚至更短的时间内得到处理。然而,数据库架构几乎没有发生变化。
基于这一观察,我们研究了传统数据库系统一些有趣的变体,人们可以构建它们来利用最近的硬件趋势,然后我们使用一个事务处理数据库系统 (Shore) 来运行 TPC-C 基准程序的一个子集,并通过这个系统所涉及的主要组件的详细指令级分解来推测它们的性能。我们没有简单地剖析 Shore ,而是逐步地修改它,以便在每次功能删除或优化之后,我们都有一个(更快的)工作系统来完整运行我们的工作负载。总的来说,我们确定了可以解释原始性能存在大约 20 倍差异的开销和优化。我们还证明,现代(内存驻留)数据库系统没有单个的 “ 瓶颈 ” ,但日志记录、锁存、封锁、 B 树和缓冲区管理操作上花费了大量时间。
分类和主题词
H.2.4 [ 数据库管理 ] :系统 —— 事务处理;并发。
通用术语
测量、性能、实验。
关键词
联机事务处理、 OLTP 、主存储器事务处理、数据库管理系统架构。
- 前言
现代通用在线事务处理 (OLTP) 数据库系统包括一组标准功能:一系列用于表存储的磁盘数据结构(包括堆文件和 B 树),通过基于锁的并发控制支持多个并发查询,基于日志的恢复和高效的缓冲区管理器。人们开发这些功能来支持 20 世纪 70 和 80 年代的事务处理,那时的 OLTP 数据库比主存储器大很多倍,而运行这些数据库的计算机成本高达数十万到数百万美元。
如今的情况则完全不同。首先,现代处理器运行速度非常快,以至于很多 OLTP 事务的计算时间以微秒计算。人们只需几千美元就可以购买到主存储器容量为数 GB 的系统。此外,组织机构拥有由众多此类工作站组成的网络集群并不罕见,其中的存储器总容量以数百 GB 来计算,这足以将许多 OLTP 数据库放在随机存取存储器中。
其次,因特网的兴起和用于众多领域的各种数据密集型应用程序导致人们对类似于数据库的应用程序的兴趣越来越大,而这些应用程序没有全套的标准数据库功能。如今,操作系统和网络会议充满了针对 “ 类似于数据库 ” 的存储系统的方案,这些存储系统具有不同形式的一致性、可靠性、并发性、复制性和查询能力 [DG04, CDG+06, GBH+00, SMK+