云数据库 SelectDB 版旨在提供卓越的性能和便捷的数据分析服务,在宽表聚合、多表关联以及高并发点查等场景下均具有优异的性能表现。本文将为您介绍,在Linux环境下,如何使用TPC-DS标准测试SelectDB复杂查询的性能以及测试结果。
概述
TPC-DS(Transaction Processing Performance Council Decision Support Benchmark)是由TPC(Transaction Processing Performance Council)组织开发的,以决策支持为重点的基准测试,旨在评估不同系统在处理复杂查询和大规模数据分析方面的性能。
TPC-DS的设计目标是模拟现实业务中的复杂决策。它通过一系列复杂的查询和数据操作来测试系统的性能,所涉及的查询类型包括联接、聚合、排序、过滤、子查询等。这些查询涵盖了从简单到复杂的各种场景,例如如报表生成、数据挖掘、OLAP(联机分析处理)等。
前提条件
SelectDB实例版本大于等于4.0。
准备工作
确保将安装TPC-DS测试工具的目标服务器与SelectDB实例网络互通:
确保您将要TPC-DS测试工具的目标服务器已安装了MySQL服务。
如果您还未安装MySQL服务,可使用以下指令,安装MySQL服务。
yum install mysql
准备目标库。
如果您已有目标库,跳过此操作。
连接实例,具体操作,请参见通过DMS连接云数据库SelectDB版实例。
建库。建库语句如下:
CREATE DATABASE <db_name>;
测试环境
SelectDB数据库环境。
环境配置项
配置说明
地域和可用区
华东1(杭州)地域,可用区K。
规格
64核512 GB
磁盘
800 GB高性能云硬盘
云数据库 SelectDB 版内核版本
4.0.3
客户端环境。
环境配置项
配置说明
下载测试工具的设备
云服务器ECS实例,详情请参见创建实例。
地域和可用区
华东1(杭州)地域
实例规格
ecs.g7.2xlarge
操作系统
Ubuntu 22.04.1 LTS
网络
与云数据库 SelectDB 版版实例为相同专有网络(VPC)。
测试数据集
TPC-DS的标准测试数据集通常和实际业务场景差距较大,并且部分测试会针对测试数据集进行参数调优。所以标准测试数据集的测试结果仅能反映数据库在特定场景下的性能表现。建议您使用实际业务数据进行进一步的测试。
此次测试TPC-DS会生成100 GB和1000 GB的数据,并将其导入SelectDB,以进行SelectDB的性能测试。以下是关于测试数据集为1000 GB数据表的相关说明。
TPC-DS表名 | 行数 |
customer_demographics | 1,920,800 |
reason | 65 |
warehouse | 20 |
date_dim | 73,049 |
catalog_sales | 1,439,980,416 |
call_center | 42 |
inventory | 783,000,000 |
catalog_returns | 143,996,756 |
household_demographics | 7,200 |
customer_address | 6,000,000 |
income_band | 20 |
catalog_page | 30,000 |
item | 300,000 |
web_returns | 71,997,522 |
web_site | 54 |
promotion | 1,500 |
web_sales | 720,000,376 |
store | 1,002 |
web_page | 3,000 |
time_dim | 86,400 |
store_returns | 287,999,764 |
store_sales | 2,879,987,999 |
ship_mode | 20 |
customer | 12,000,000 |
操作步骤
步骤一:安装TPC-DS测试工具
下载瑶池测试工具。
wegt https://selectdb-customers-tools-bj.oss-cn-beijing.aliyuncs.com/yaochi_performance_tool.tar.gz
解压工具文件。
tar -zxvf yaochi_performance_tool.tar.gz
在测试工具安装目录
yaochi_performance_tool/tpcds-tools/bin/
下,执行以下脚本以下载并编译tpcds-tools工具。bash build-tpcds-tools.sh
步骤二:生成TPC-DS测试集
在测试工具安装目录yaochi_performance_tool/tpcds-tools/bin/
下,执行下脚本以生成TPC-DS数据集。
bash gen-tpcds-data.sh -s 1000
测试集数据会保存在tpcds-data
目录下以.dat
为后缀的文件中。
步骤三:使用脚本为SelectDB实例创建TPC-DS测试表
配置SelectDB实例信息。
在执行建表脚本前,需要在
doris-cluster.conf
文件中,配置SelectDB实例的相关信息。该文件位于测试工具安装目录yaochi_performance_tool/tpcds-tools/conf/
下,具体参数信息如下。参数名称
参数描述
FE_HOST
SelectDB实例的访问地址。
您可以从SelectDB控制台的实例详情中的网络信息中获取实例的VPC地址或公网地址。
FE_HTTP_PORT
SelectDB实例的HTTP协议端口。
您可以从SelectDB控制台的实例详情中的网络信息中获取实例的HTTP协议端口。
FE_QUERY_PORT
您可以从SelectDB控制台的实例详情中的网络信息中获取实例的MySQL协议端口
USER
SelectDB实例账号。
创建SelectDB实例后,系统会默认为您创建admin账号。
PASSWORD
SelectDB实例账号的密码。
如果您的USER配置的是admin账号,但您忘记了此账号的密码,您可以在控制台上重置账号密码。
DB
SelectDB实例中待导入数据的库名。
建表 。
在测试工具安装目录
yaochi_performance_tool/tpcds-tools/bin/
下,执行以下脚本,创建用以测试的表。脚本执行完成后,SelectDB的目标库中,会生成上述测试数据集中的表。bash create-tpcds-tables.sh -s 1000
步骤四:导入数据至SelectDB
在测试工具安装目录yaochi_performance_tool/tpcds-tools/bin/
下,执行以下脚本,完成TPC-DS测试集所有数据的导入至SelectDB。
bash load-tpcds-data.sh
步骤五:测试查询性能
您可以执行TPC-DS测试SQL的相关脚本,批量执行测试集的SQL,具体操作如下:
在测试工具安装目录yaochi_performance_tool/tpcds-tools/bin/
下,执行以下脚本。
bash run-tpcds-queries.sh -s 1000
脚本执行完毕后,控制台窗口将显示测试集中每个SQL在SelectDB中的性能情况。具体测试结果,请参见测试结果。
您也可以对SelectDB执行某个SQL的性能进行测试,具体操作如下:
连接SelectDB实例。具体操作,请参见通过DMS连接云数据库SelectDB版实例。
执行目标SQL。您可以在TPCDS-Query-SQL中获取目标SQL。
TPCDS-Query-SQL中的SQL也是上述通过脚本批量测试中执行的SQL。
测试结果
以下为TPC-DS 100 GB和1000 GB的测试结果。
Query | TPC-DS 100GB(s) | TPC-DS 1000GB(s) |
Q1 | 0.19 | 1.01 |
Q2 | 1.12 | 8.54 |
Q3 | 0.12 | 0.65 |
Q4 | 2.15 | 21.06 |
Q5 | 0.29 | 1.17 |
Q6 | 0.13 | 0.33 |
Q7 | 0.21 | 1.11 |
Q8 | 0.14 | 0.55 |
Q9 | 1.56 | 13.48 |
Q10 | 0.2 | 0.71 |
Q11 | 1.26 | 12.44 |
Q12 | 0.08 | 0.19 |
Q13 | 0.25 | 1.27 |
Q14 | 1.64 | 12.85 |
Q15 | 0.11 | 0.73 |
Q16 | 0.76 | 0.68 |
Q17 | 0.37 | 1.69 |
Q18 | 0.22 | 1.17 |
Q19 | 0.11 | 0.41 |
Q20 | 0.09 | 0.23 |
Q21 | 0.07 | 0.12 |
Q22 | 2.25 | 4.18 |
Q23 | 3.33 | 39.14 |
Q24 | 0.71 | 9.71 |
Q25 | 0.32 | 1.05 |
Q26 | 0.13 | 0.41 |
Q27 | 0.2 | 1.03 |
Q28 | 1.32 | 12.02 |
Q29 | 0.31 | 1.35 |
Q30 | 0.12 | 0.48 |
Q31 | 0.47 | 4.91 |
Q32 | 0.05 | 0.1 |
Q33 | 0.27 | 0.75 |
Q34 | 0.34 | 1.44 |
Q35 | 0.42 | 2.36 |
Q36 | 0.61 | 0.91 |
Q37 | 0.06 | 0.13 |
Q38 | 1.43 | 11.23 |
Q39 | 0.34 | 0.6 |
Q40 | 0.08 | 0.19 |
Q41 | 0.04 | 0.04 |
Q42 | 0.08 | 0.19 |
Q43 | 0.32 | 2.14 |
Q44 | 0.54 | 3.99 |
Q45 | 0.1 | 0.55 |
Q46 | 0.41 | 4.62 |
Q47 | 0.82 | 6.13 |
Q48 | 0.24 | 1.03 |
Q49 | 0.3 | 1.23 |
Q50 | 0.26 | 1.93 |
Q51 | 4.01 | 11.87 |
Q52 | 0.07 | 0.22 |
Q53 | 0.12 | 0.59 |
Q54 | 0.34 | 2.6 |
Q55 | 0.07 | 0.22 |
Q56 | 0.23 | 0.61 |
Q57 | 0.59 | 3.38 |
Q58 | 0.21 | 0.48 |
Q59 | 1.69 | 15.65 |
Q60 | 0.24 | 0.74 |
Q61 | 0.12 | 1 |
Q62 | 0.26 | 1.98 |
Q63 | 0.12 | 0.46 |
Q64 | 0.55 | 4.91 |
Q65 | 1.33 | 10.39 |
Q66 | 0.21 | 0.86 |
Q67 | 6.87 | 59.04 |
Q68 | 0.37 | 4.44 |
Q69 | 0.23 | 0.68 |
Q70 | 0.78 | 5.54 |
Q71 | 0.22 | 0.74 |
Q72 | 2.66 | 8.81 |
Q73 | 0.24 | 1.27 |
Q74 | 1.57 | 10.5 |
Q75 | 1.13 | 8.73 |
Q76 | 0.35 | 4.86 |
Q77 | 0.25 | 0.74 |
Q78 | 2.89 | 31.02 |
Q79 | 0.39 | 8.42 |
Q80 | 0.34 | 1.07 |
Q81 | 0.15 | 0.84 |
Q82 | 0.09 | 0.72 |
Q83 | 0.14 | 0.3 |
Q84 | 0.07 | 0.22 |
Q85 | 0.25 | 0.45 |
Q86 | 0.2 | 1.36 |
Q87 | 1.55 | 13.14 |
Q88 | 1.5 | 12.36 |
Q89 | 0.17 | 0.88 |
Q90 | 0.11 | 0.41 |
Q91 | 0.1 | 0.16 |
Q92 | 0.04 | 0.07 |
Q93 | 0.31 | 5.4 |
Q94 | 0.34 | 0.57 |
Q95 | 0.21 | 0.8 |
Q96 | 0.2 | 1.41 |
Q97 | 1.26 | 13.26 |
Q98 | 0.16 | 0.43 |
Q99 | 0.48 | 4.13 |