本文为您介绍如何使用Star Schema Benchmark(简称SSB)对OLAP查询场景进行性能测试。
SSB简介
SSB是一种用于评估数据仓库和OLAP系统性能的基准测试。它模拟了一个典型的星型模式(Star Schema)数据模型,包含了Date(日期表)、Customer(客户表)、Supplier(供应商表)、Part(产品表)和Lineorder(订单事实表)这五个表格。此外,SSB允许您根据具体需求对数据模型进行自定义,例如将星型模式转换为宽表结构。
SSB基准测试是通过执行一系列规定的查询模式来评估数据仓库或OLAP系统的性能指标,包括查询响应时间、并发处理能力、数据加载和查询优化等。
本文的SSB的实现基于SSB的基准测试,并不能与已发布的SSB基准测试结果相比较。
场景说明
本测试场景中SSB的生成工具中使用SF(scale factor)控制生成数据量的大小,1SF对应1 GB。
以上数据量仅针对原始数据的数据量,不包括索引等空间占用,因此在准备环境时,您需要预留更多的空间。
准备工作
您需要准备OLAP查询场景所需的基础环境。
为了减少可能对测试结果有影响的变量,建议每次使用新创建的实例进行测试,不要使用升降配的实例。
| 操作步骤 | 操作说明 | 
| 
 | 登录阿里云,创建一个ECS实例,用于数据生成、向StarRocks导入数据和客户端测试。建议规格具体如下: 
 更多关于创建ECS的操作,请参见实例创建方式介绍。 | 
| 
 | 本次测试BE计算资源配置选择了8 CU(即8核32 GB)。您可以根据实际业务需求,选择计算资源配置。 登录阿里云,进入E-MapReduce控制台的EMR Serverless StarRocks页面,单击创建实例。 更多关于创建StarRocks实例的操作,请参见创建实例。 | 
| 
 | 您需要登录步骤1中创建的ECS实例,在节点上执行如下命令下载测试工具包。  | 
操作步骤
步骤一:配置测试工具包
- 登录已创建的ECS实例,详情请参见连接ECS实例。 
- 执行以下命令,进入starrocks-ssb-benchmark-for-serverless目录。 - cd starrocks-ssb-benchmark-for-serverless
- 执行 - vim conf/starrocks.conf命令,根据实际情况修改以下参数。- # for mysql cmd mysql_host: fe-c-7b6f92276******-internal.starrocks.aliyuncs.com mysql_port: 9030 mysql_user: admin mysql_password: 1**** database: ssb_sf # cluster ports http_port: 8030 #是否开启bitmap_index bitmap_index: false # benchmark config scale_factor: 1 dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasets- 参数详细描述如下表所示。 - 参数 - 说明 - mysql_host - StarRocks实例中FE的内网地址。 - 您可以在StarRocks实例的实例详情页签的FE详情区域,查看内网地址。 重要- 不建议使用公网地址。 - mysql_port - StarRocks实例中FE的服务端口,默认为9030。 - 您可以在StarRocks实例的实例详情页签的FE详情区域,查看查询端口。 - mysql_user - StarRocks实例的用户。默认为admin。 - mysql_password - StarRocks实例用户的密码。 - database - StarRocks实例创建的数据库名称,使用默认值即可。 - scale_factor - 数据集的比例因子,控制生成数据量的大小。默认值为1,单位为GB。 重要- 创建实例时请关注云盘的容量,避免生成数据集大小超过云盘容量。 - dataset_generate_root_path - 存放生成测试数据集的路径。默认值为/mnt/disk1/starrocks-benchmark/datasets。 - bitmap_index - 是否启用Bitmap Index功能。取值为true和false。 - 启用Bitmap Index功能可以提供更高效的查询性能,尤其对于一些特定的查询模式(例如Q2.2,Q2.3,Q3.3等)。 - http_port - StarRocks实例中FE的HTTP端口,默认为8030。 - 您可以在StarRocks实例的实例详情页签的FE详情区域,查看HTTP端口。 
步骤二:生成测试数据
执行以下命令,进行自动化SSB数据加载。
sh ssb_dataload.sh该命令将自动完成SSB数据加载过程,包括数据库、表和数据集的生成以及加载。
步骤三:执行查询并查看测试结果
通过执行以下命令,您可以方便地查看SSB测试的概览结果,并在当前目录下生成result.csv文件,您可以了解测试结果的更多信息。
- SSB宽表查询。 - sh ssb_query.sh ssb-flat- 返回如下信息。 - SQL Time(ms) Q1.1 48 Q1.2 62 Q1.3 33 Q2.1 91 Q2.2 93 Q2.3 84 Q3.1 84 Q3.2 69 Q3.3 68 Q3.4 55 Q4.1 112 Q4.2 102 Q4.3 80 Total 981
- SSB标准表查询。 - sh ssb_query.sh ssb- 返回如下信息。 - SQL Time(ms) Q1.1 13 Q1.2 20 Q1.3 13 Q2.1 20 Q2.2 20 Q2.3 23 Q3.1 23 Q3.2 23 Q3.3 20 Q3.4 23 Q4.1 30 Q4.2 36 Q4.3 30 Total 294