数据库性能基准与应用开发相关问题解析
立即解锁
发布时间: 2025-08-23 01:16:54 阅读量: 2 订阅数: 20 

# 数据库性能基准与应用开发相关问题解析
## 1. 性能基准概述
随着数据库服务器的标准化程度不断提高,不同供应商产品之间的差异主要体现在性能上。性能基准是用于量化软件系统性能的一组任务。
### 1.1 任务套件
大多数软件系统(如数据库)较为复杂,不同供应商的实现方式存在很大差异,这导致它们在不同任务上的性能表现也有很大不同。一个系统可能在某一特定任务上效率最高,而另一个系统可能在另一个任务上效率最高。因此,通常单个任务不足以量化系统的性能,而是通过一组标准化的任务(即性能基准)来衡量系统性能。
在组合多个任务的性能数据时需要谨慎。例如,假设有两个任务 T1 和 T2,我们以每秒运行的每种类型事务的数量来衡量系统的吞吐量。系统 A 每秒运行 T1 事务 99 次,运行 T2 事务 1 次;系统 B 每秒运行 T1 和 T2 事务均为 50 次。如果工作负载中这两种类型的事务混合比例相等,若简单地对两组数字(99 和 1,50 和 50)取平均值,可能会认为两个系统性能相同。但实际上,如果每种类型运行 50 个事务,系统 A 大约需要 50.5 秒才能完成,而系统 B 只需 2 秒。
这表明,当存在多种类型的事务时,简单的性能衡量方法会产生误导。正确的平均方法是考虑工作负载的完成时间,而不是每种事务类型的平均吞吐量。对于系统 A,平均每个事务需要 50.5 / 100 = 0.505 秒;对于系统 B,平均每个事务需要 0.02 秒。从吞吐量来看,系统 A 平均每秒运行 1.98 个事务,而系统 B 每秒运行 50 个事务。假设所有类型的事务发生的可能性相等,正确的平均不同事务类型吞吐量的方法是取吞吐量的调和平均值。n 个吞吐量 t1, …, tn 的调和平均值定义为:
\[
\frac{n}{\frac{1}{t_1} + \frac{1}{t_2} + \cdots + \frac{1}{t_n}}
\]
在上述示例中,系统 A 的吞吐量调和平均值为 1.98,系统 B 为 50。因此,在由这两种示例类型事务混合组成的工作负载中,系统 B 大约比系统 A 快 25 倍。
### 1.2 数据库应用类别
数据库系统处理的应用主要分为两大类:在线事务处理(OLTP)和决策支持(包括在线分析处理 OLAP)。这两类任务有不同的要求。支持高更新事务率需要高并发性和加速提交处理的巧妙技术;而决策支持则需要良好的查询评估算法和查询优化。
一些数据库系统的架构针对事务处理进行了优化,而另一些(如 Teradata 系列并行数据库系统)则针对决策支持进行了优化。其他供应商则试图在这两个任务之间取得平衡。
应用程序通常同时具有事务处理和决策支持的需求。因此,对于一个应用程序来说,哪种数据库系统最适合取决于该应用程序对这两种需求的混合比例。
如果分别有这两类应用的吞吐量数据,并且手头的应用程序包含这两类事务的混合,即使在计算吞吐量的调和平均值时也必须谨慎,因为事务之间可能会相互干扰。例如,一个长时间运行的决策支持事务可能会获取多个锁,从而阻止更新事务的进行。只有当事务之间互不干扰时,才应使用吞吐量的调和平均值。
### 1.3 TPC 基准
事务处理性能委员会(TPC)为数据库系统定义了一系列基准标准。
TPC 基准的定义非常详细,它定义了关系集和元组的大小。关系中元组的数量不是固定的,而是声明的每秒事务数的倍数,以反映更高的事务执行率可能与更多的账户数量相关。性能指标是吞吐量,以每秒事务数(TPS)表示。在测量性能时,系统必须在一定的响应时间范围内提供响应,以避免以极长的响应时间为代价来获得高吞吐量。
对于商业应用,成本非常重要。因此,TPC 基准还以每 TPS 的价格来衡量性能。一个大型系统可能每秒处理的事务数量很多,但可能很昂贵(即每 TPS 的价格很高)。此外,公司在其系统上声称 TPC 基准数据之前,必须经过外部审计,以确保系统完全遵循基准的定义,包括对事务的 ACID 属性的全面支持。
以下是一些常见的 TPC 基准的介绍:
| 基准名称 | 定义时间 | 模拟场景 | 特点 | 当前使用情况 |
| ---- | ---- | ---- | ---- | ---- |
| TPC - A | 1989 年 | 模拟银行柜员的现金取款和存款交易 | 涉及多个关系的更新,并添加审计记录,包含与终端的通信 | 已不再使用 |
| TPC - B | - | - | 去除了 TPC - A 中与用户、通信和终端相关的部分,专注于后端数据库服务器 | 已不再使用 |
| TPC - C | - | 模拟订单录入环境中的主要活动,如订单录入、交付、记录付款、检查订单状态和监控库存水平 | 广泛用于在线事务处理(OLTP)系统的基准测试 | 仍广泛使用 |
| TPC - E | - | 基于经纪公司的模型,客户与公司交互并生成交易,公司与金融市场交互执行交易 | 针对 OLTP 系统 | - |
| TPC - D | - | 模拟销售/分销应用,包含零件、供应商、客户和订单等关系 | 用于测试数据库系统在决策支持查询方面的性能 | - |
| TPC - H | - | 是 TPC - D 的改进版本,禁止使用物化视图和其他冗余信息,仅允许在主键和外键上使用索引 | 模拟临时查询,查询事先未知 | - |
| TPC - R | - | 与 TPC - H 类似,但允许使用物化视图和其他冗余信息 | - | 已不再使用 |
| TPC - W | - | 模拟具有静态内容(主要是图像)和从数据库生成的动态内容的网站 | 是端到端的基准,允许缓存动态内容 | 已不再使用 |
mermaid 流程图展示 TPC 基准的大致分类:
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(TPC 基准):::process --> B(TPC - A):::process
A -->
```
0
0
复制全文
相关推荐










