跳到主要内容

TPC-DS Benchmark

TPC-DS(Transaction Processing Performance Council Decision Support Benchmark)是一个以决策支持为重点的基准测试,旨在评估数据仓库和分析系统的性能。它是由 TPC(Transaction Processing Performance Council)组织开发的,用于比较不同系统在处理复杂查询和大规模数据分析方面的能力。

TPC-DS 的设计目标是模拟现实世界中的复杂决策支持工作负载。它通过一系列复杂的查询和数据操作来测试系统的性能,包括联接、聚合、排序、过滤、子查询等。这些查询模式涵盖了从简单到复杂的各种场景,如报表生成、数据挖掘、OLAP(联机分析处理)等。

本文档主要介绍 Doris 在 TPC-DS 1000G 测试集上的性能表现。

在 TPC-DS 标准测试数据集上的 99 个查询上,我们基于 Apache Doris 3.0.3-rc03 (存算分离模式) 和 Apache Doris 2.1.7-rc03 版本进行了对比测试。3.x 版本存算一体模式的性能参照 2.1.x 版本。

TPCDS_1000G

1. 硬件环境

硬件配置说明
机器数量4 台阿里云主机(1 个 FE,3 个 BE)
CPUIntel Xeon (Ice Lake) Platinum 8369B 32核
内存128G
磁盘阿里云 ESSD (PL0)

2. 软件环境

  • Doris 部署 3BE 1FE
  • 内核版本:Linux version 5.15.0-101-generic
  • 操作系统版本:Ubuntu 20.04 LTS (Focal Fossa)
  • Doris 软件版本:Apache Doris 3.0.3-rc03 (存算分离模式), Apache Doris 2.1.7-rc03
  • JDK:openjdk version "17.0.2"

3. 测试数据量

整个测试模拟生成 TPC-DS 1000G 的数据分别导入到 Apache Doris 3.0.3-rc03 (存算分离模式) 和 Apache Doris 2.1.7-rc03 版本进行测试,下面是表的相关说明及数据量。

TPC-DS 表名行数
customer_demographics1,920,800
reason65
warehouse20
date_dim73,049
catalog_sales1,439,980,416
call_center42
inventory783,000,000
catalog_returns143,996,756
household_demographics7,200
customer_address6,000,000
income_band20
catalog_page30,000
item300,000
web_returns71,997,522
web_site54
promotion1,500
web_sales720,000,376
store1,002
web_page3,000
time_dim86,400
store_returns287,999,764
store_sales2,879,987,999
ship_mode20
customer12,000,000

4. 测试 SQL

TPC-DS 99 个测试查询语句: TPC-DS-Query-SQL

5. 测试结果

这里我们使用 Apache Doris 3.0.3-rc03 (存算分离模式) 和 Apache Doris 2.1.7-rc03 版本进行对比测试,测试结果如下:

QueryApache Doris 3.0.3-rc03 Compute-Storage Coupled Mode (ms)Apache Doris 2.1.7-rc03 (ms)
query01580630
query0255404930
query03350360
query041079011070
query05710620
query06230220
query07590550
query08350330
query0975206830
query10390370
query1165606960
query12120100
query13780790
query141320013470
query15400510
query16410520
query1713001310
query18650560
query19250200
query20110100
query2111080
query2215702300
query233718038240
query2474708340
query25920780
query26200200
query27550530
query2873005940
query29920940
query30300270
query3120001890
query327060
query33400350
query34760750
query3512901370
query36460530
query378060
query3854507520
query39760560
query40140150
query415050
query42110100
query4311701150
query4421202020
query45280430
query4613901250
query4721602660
query48660630
query49810730
query5015701640
query5160306430
query52120110
query53280250
query5415401280
query55130110
query56300290
query5712401480
query58260240
query59101207760
query60370380
query61560540
query62920740
query63230210
query6416605790
query6548004900
query66400480
query672419027320
query6814001600
query691170380
query7031603480
query71440460
query7240903160
query73660660
query7457205990
query7545604610
query7618001590
query77330300
query781630017970
query7931603040
query80590570
query81540460
query82320270
query83230220
query84130130
query85780520
query86660760
query8762008000
query8856205560
query89400430
query90150150
query91160150
query925040
query9323802440
query94290340
query95410350
query96680660
query9748705020
query98200190
query9919401560
Total251620261320

6. 环境准备

请先参照 官方文档 进行 Doris 的安装部署,以获得一个正常运行中的 Doris 集群(至少包含 1 FE 1 BE,推荐 1 FE 3 BE)。

7. 数据准备

7.1 下载安装 TPC-DS 数据生成工具

执行以下脚本下载并编译 tpcds-tools 工具。

sh bin/build-tpcds-tools.sh

7.2 生成 TPC-DS 测试集

执行以下脚本生成 TPC-DS 数据集:

sh bin/gen-tpcds-data.sh -s 1000

注 1:通过 sh gen-tpcds-data.sh -h 查看脚本帮助。

注 2:数据会以 .dat 为后缀生成在 tpcds-data/ 目录下。文件总大小约 1000GB。生成时间可能在数分钟到 1 小时不等。

注 3:默认生成 100G 的标准测试数据集

7.3 建表

7.3.1 准备 doris-cluster.conf 文件

在调用导入脚本前,需要将 FE 的 ip 端口等信息写在 doris-cluster.conf 文件中。

文件位置在 ${DORIS_HOME}/tools/tpcds-tools/conf/ 目录下。

文件内容包括 FE 的 ip,HTTP 端口,用户名,密码以及待导入数据的 DB 名称:

# Any of FE host
export FE_HOST='127.0.0.1'
# http_port in fe.conf
export FE_HTTP_PORT=8030
# query_port in fe.conf
export FE_QUERY_PORT=9030
# Doris username
export USER='root'
# Doris password
export PASSWORD=''
# The database where TPC-DS tables located
export DB='tpcds'

7.3.2 执行以下脚本生成创建 TPC-DS 表

sh bin/create-tpcds-tables.sh -s 1000

或者复制 create-tpcds-tables.sql 中的建表语句,在 Doris 中执行。

7.4 导入数据

通过下面的命令执行数据导入:

sh bin/load-tpcds-data.sh

7.5 查询测试

7.5.1 执行查询脚本

单个 SQL 执行 或者 执行下面的命令

sh bin/run-tpcds-queries.sh -s 1000

7.5.2 单个 SQL 执行

你也可以从代码库里获取最新的 SQL。最新测试查询语句地址:TPC-DS 测试查询语句