TPC-C性能测试
前言
事务处理性能协会(Transaction Processing Performance Council,简称TPC)是一个专门评价大型数据库系统硬、软件性能的组织。至今(1998年12月),TPC颁布了A、B、C、D四种系统性能测试标准,简称为TPC-A、TPC-B、TPC-C、TPC-D。其中TPC-A与TPC-B为早期标准,最新标准TPC-D仍在指定过程中,目前普遍使用针对联机事务处理(OLTP)的TPC-C标准。
TPC Benchmark C是一套评价OLTP性能的测试程序,被全球主流计算机硬件厂商、数据库厂商公认为性能评价标准。TPC-C测试程序模拟了一个库存、销售系统,其中的数据库结构设计、应用程序规划代表了对RDBMS的标准用法。
本文以TPC在1998年8月14日分布的《TPC BENCHMARK C - Standard Specification Revision 3.4》英文版(可以从TPC主页“”下载)为蓝本,选择翻译了其中逻辑设计部分,为提高可读性,多处进行了意译,并加入了注解。由于译者水平有限,恐怕挂一漏万,如果能够对数据库应用程序员有一点参考价值,也就达到目的了。
2. 逻辑数据库设计
2.1 业务和应用程序环境
TPC-C由一组基本操作组成,用以测试典型的复杂联机事务处理(OLTP)系统性能。
TPC-C的模拟程序并不针对特定的商业对象,可以模拟含有管理、销售、分发产品、服务的任何工业(例如:汽车出租,食物分配,零件供应等等)。
TPC-C中虚拟的公司是一家仓库销售供应商,拥有一批分布在不同地方的仓库和地区分公司。当公司业务扩大时,将建立新的仓库和地区分公司。通常每个仓库供货覆盖10家地区分公司,每个地区分公司服务3000名客户。公司共有100,000种商品,分别储存在各个仓库中。图表 1描述了仓库、地区分公司、客户的隶属关系。
图表 1
系统功能包括:客户向公司下订单,查询旧订单。订单平均由10行分录组成。订单中1%的商品当地仓库缺货,由其他仓库供货。
同时还要处理付款、发货,和库存报警。
2.2 数据库实体、关系、属性
TPC-C数据库由9张独立的表组成。图表 2表示了表和表之间的关系。
图表 2
说明:
数字表示数据库的容量需求
实体块中的数字表示表的基数(行数)。这些数字以仓库数W为因数,决定数据库的缩放能力
关系箭头上的数字表示关系的基数(父子对应平均数)
在关系的基数和表的基数后的加号表示随着行的增减,数值可能增长
2.3 表结构
表中出现的属性(attribute)定义:
N unique IDs,不重复的代码,至少可以存储N个。不限制物理类型(例如:二进制binary、压缩十进制packed decimal、字符alphabetic等等)
variable text, size N,变长字符串,最大长度为N。如果用定长字符串模拟,则在字符串尾追加空格
fixed text, size N,定长字符串,长度为N
date and time,日期时间,可以表示从1990年1月1日至2100年12月31日的日期,精度至少为1秒
numeric, N digits,数字型,可以表示N位数字。当用于存储货币时必须能表示用户所在国货币定义。例如在美国,可以定义为(12,2)有符号数字;也可以定义为至少41比特(bits)的有符号整数;还可以定义为64比特(bits)双精度浮点数(REAL)
null,表示无意义数值
注释1:表中所有的属性可以以任意顺序创建,可以用目标系统支持的任意物理数据类型实现
注释2:表的名称和字段的名称只是用于说明,实现时可以改为其他名称
2.3.1 WAREHOUSE(仓库)
字 段 名 称 | 字 段 定 义 | 注 释 |
W_ID | 2*W unique IDs | W是仓库数目 |
W_NAME | Variable text, size 10 | |
W_STREET_1 | variable text, size 20 | |
W_STREET_2 | variable text, size 20 | |
W_CITY | variable text, size 20 | |
W_STATE | fixed text, size 2 | |
W_ZIP | fixed text, size 9 | |
W_TAX | numeric, 4 digits | 销售税 |
W_YTD | numeric, 12 digits | 本年余额(Year to date balance) |
Primary Key : W_ID
2.3.2 DISTRICT(地区)
字 段 名 称 | 字 段 定 义 | 注 释 |
D_ID | 20 unique IDs | 通常为10个 |
D_W_ID | 2*W unique IDs | |
D_NAME | variable text, size 10 | |
D_STREET_1foreign key references用法 | variable text, size 20 | |
D_STREET_2 | variable text, size 20 | |
D_CITY | variable text, size 20 | |
D_STATE | fixed text, size 2 | |
D_ZIP | fixed text, size 9 | |
D_TAX | numeric, 4 digits | 销售税 |
D_YTD | numeric, 12 digits | 本年余额(Year to date balance) |
D_NEXT_O_ID | 10,000,000 unique IDs | 下一张定单号 |
Primary Key : (D_W_ID, D_ID)
D_W_ID Foreign Key, references W_ID
2.3.3 CUSTOMER(客户)
字 段 名 称 | 字 段 定 义 | 注 释 |
C_ID | 96,000 unique IDs | 通常为3,000 |
C_D_ID | 20 unique IDs | |
C_W_ID | 2*W unique IDs | |
C_FIRST | variable text, size 16 | |
C_MIDDLE | fixed text, size 2 | |
C_LAST | variable text, size 16 | |
C_STREET_1 | variable text, size 20 | |
C_STREET_2 | variable text, size 20 | |
C_CITY | variable text, size 20 | |
C_STATE | fixed text, size 2 | |
C_ZIP | fixed text, size 9 | |
C_PHONE | fixed text, size 16 | |
C_SINCE | date and time | 登记日期 |
C_CREDIT | fixed text, size 2 | 信用(“GC”=good, “BC”=bad) |
C_CREDIT_LIM | numeric, 12 digits | 透支限额 |
C_DISCOUNT | numeric, 4 digits | 折扣 |
C_BALANCE | signed numeric, 12 digits | 欠款余额 |
C_YTD_PAYMENT | numeric, 12 digits | 累计付款金额 |
C_PAYMENT_CNT | numeric, 4 digits | 累计付款次数 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论