文档中心>TDSQL Boundless>通用参考>TPC-H 基准测试数据模型参考

TPC-H 基准测试数据模型参考

最近更新时间:2026-03-23 14:47:04

我的收藏

概述

TPC-H(Transaction Processing Performance Council - H)是由 TPC 组织制定的决策支持基准测试标准,模拟了一个典型的订单管理系统的数据仓库环境。TPC-H 数据模型广泛应用于数据库性能测试、查询优化验证和商业智能场景。

业务场景

TPC-H 模拟的是一个全球化的零售批发供应商系统,涵盖以下核心业务流程:
零件供应:供应商向客户提供各种零件
订单管理:客户下单购买零件
物流配送:订单明细记录每个零件的配送状态
财务结算:跟踪订单金额、折扣、税费等财务信息
全球化运营:涉及多个国家和地区的业务

表结构详解

1. REGION (区域表)

业务含义:全球业务区域划分(如亚洲、欧洲、美洲等)
CREATE TABLE region (
r_regionkey INT NOT NULL, -- 区域键(主键)
r_name CHAR(25) NOT NULL, -- 区域名称
r_comment VARCHAR(152), -- 备注信息
PRIMARY KEY (r_regionkey)
);

2. NATION (国家表)

业务含义:国家信息,隶属于某个区域
CREATE TABLE nation (
n_nationkey INT NOT NULL, -- 国家键(主键)
n_name CHAR(25) NOT NULL, -- 国家名称
n_regionkey INT NOT NULL, -- 所属区域键(外键 -> region)
n_comment VARCHAR(152), -- 备注信息
PRIMARY KEY (n_nationkey),
FOREIGN KEY (n_regionkey) REFERENCES region(r_regionkey)
);

3. CUSTOMER (客户表)

业务含义:客户基本信息,包括账户余额、市场细分等
CREATE TABLE customer (
c_custkey INT NOT NULL, -- 客户键(主键)
c_name VARCHAR(25) NOT NULL, -- 客户名称
c_address VARCHAR(40) NOT NULL, -- 客户地址
c_nationkey INT NOT NULL, -- 所属国家键(外键 -> nation)
c_phone CHAR(15) NOT NULL, -- 联系电话
c_acctbal DECIMAL(15,2) NOT NULL,-- 账户余额
c_mktsegment CHAR(10) NOT NULL, -- 市场细分
c_comment VARCHAR(117) NOT NULL, -- 备注信息
PRIMARY KEY (c_custkey),
FOREIGN KEY (c_nationkey) REFERENCES nation(n_nationkey)
);

4. PART (零件表)

业务含义:产品零件信息,包括规格、品牌、价格等
CREATE TABLE part (
p_partkey INT NOT NULL, -- 零件键(主键)
p_name VARCHAR(55) NOT NULL, -- 零件名称
p_mfgr CHAR(25) NOT NULL, -- 制造商
p_brand CHAR(10) NOT NULL, -- 品牌
p_type VARCHAR(25) NOT NULL, -- 零件类型
p_size INT NOT NULL, -- 尺寸
p_container CHAR(10) NOT NULL, -- 容器类型
p_retailprice DECIMAL(15,2) NOT NULL,-- 零售价格
p_comment VARCHAR(23) NOT NULL, -- 备注信息
PRIMARY KEY (p_partkey)
);

5. SUPPLIER (供应商表)

业务含义:零件供应商信息
CREATE TABLE supplier (
s_suppkey INT NOT NULL, -- 供应商键(主键)
s_name CHAR(25) NOT NULL, -- 供应商名称
s_address VARCHAR(40) NOT NULL, -- 供应商地址
s_nationkey INT NOT NULL, -- 所属国家键(外键 -> nation)
s_phone CHAR(15) NOT NULL, -- 联系电话
s_acctbal DECIMAL(15,2) NOT NULL,-- 账户余额
s_comment VARCHAR(101) NOT NULL, -- 备注信息
PRIMARY KEY (s_suppkey),
FOREIGN KEY (s_nationkey) REFERENCES nation(n_nationkey)
);

6. PARTSUPP (零件供应关系表)

业务含义:零件与供应商的多对多关系,包括库存和成本信息
CREATE TABLE partsupp (
ps_partkey INT NOT NULL, -- 零件键(外键 -> part)
ps_suppkey INT NOT NULL, -- 供应商键(外键 -> supplier)
ps_availqty INT NOT NULL, -- 可用数量
ps_supplycost DECIMAL(15,2) NOT NULL,-- 供应成本
ps_comment VARCHAR(199) NOT NULL,-- 备注信息
PRIMARY KEY (ps_partkey, ps_suppkey),
FOREIGN KEY (ps_partkey) REFERENCES part(p_partkey),
FOREIGN KEY (ps_suppkey) REFERENCES supplier(s_suppkey)
);

7. ORDERS (订单表)

业务含义:客户订单主表,记录订单基本信息
CREATE TABLE orders (
o_orderkey INT NOT NULL, -- 订单键(主键)
o_custkey INT NOT NULL, -- 客户键(外键 -> customer)
o_orderstatus CHAR(1) NOT NULL, -- 订单状态
o_totalprice DECIMAL(15,2) NOT NULL, -- 订单总价
o_orderdate DATE NOT NULL, -- 订单日期
o_orderpriority CHAR(15) NOT NULL, -- 订单优先级
o_clerk CHAR(15) NOT NULL, -- 订单处理员
o_shippriority INT NOT NULL, -- 配送优先级
o_comment VARCHAR(79) NOT NULL, -- 备注信息
PRIMARY KEY (o_orderkey),
FOREIGN KEY (o_custkey) REFERENCES customer(c_custkey)
);

8. LINEITEM (订单明细表)

业务含义:订单的明细行项,记录每个零件的配送信息,是数据量最大的事实表
CREATE TABLE lineitem (
l_orderkey INT NOT NULL, -- 订单键(外键 -> orders)
l_partkey INT NOT NULL, -- 零件键(外键 -> part)
l_suppkey INT NOT NULL, -- 供应商键(外键 -> supplier)
l_linenumber INT NOT NULL, -- 行号
l_quantity DECIMAL(15,2) NOT NULL, -- 数量
l_extendedprice DECIMAL(15,2) NOT NULL, -- 扩展价格
l_discount DECIMAL(15,2) NOT NULL, -- 折扣率
l_tax DECIMAL(15,2) NOT NULL, -- 税率
l_returnflag CHAR(1) NOT NULL, -- 退货标志
l_linestatus CHAR(1) NOT NULL, -- 行状态
l_shipdate DATE NOT NULL, -- 发货日期
l_commitdate DATE NOT NULL, -- 承诺日期
l_receiptdate DATE NOT NULL, -- 收货日期
l_shipinstruct CHAR(25) NOT NULL, -- 配送说明
l_shipmode CHAR(10) NOT NULL, -- 配送方式
l_comment VARCHAR(44) NOT NULL, -- 备注信息
PRIMARY KEY (l_orderkey, l_linenumber),
FOREIGN KEY (l_orderkey) REFERENCES orders(o_orderkey),
FOREIGN KEY (l_partkey, l_suppkey) REFERENCES partsupp(ps_partkey, ps_suppkey)
);

参考资源