使用TPC-DS对GBase 8a进行性能测试
什么是TPC-DS
TPC-DS是一个面向决策支持系统(decision support system)的包含多维度常规应用模型的决策支持基准,包括查询(queries)与数据维护。此基准对被测系统(System Under Test’s, SUT)在决策支持系统层面上的表现进行的评估具有代表性。
TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。
关于TPC-DS的评价指标,可以查看该链接:
大数据基准 TPC-DS 研究(9) - 评价指标 - 知乎
如何生成TPC-DS的数据
TPC-DS包可通过网址
https://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp
获取
在网址中填写信息后,可能会报错,这是因为网站使用了google的人机验证接口,需要重定向该验证接口到国内镜像。
重定向方法如下:
在浏览器上安装gooreplacer插件,然后添加一个重定向

编辑
之后再重新访问这个网址,应该就可以显示人机验证了,填写信息再通过验证即可。
通过官网等途径拿到TPC-DS包后,在tools目录下执行编译命令
make
之后,会有一个dsdgen可执行文件,该文件用于生成随机数据。dsdgen文件不能直接复用,不同操作系统下需要使用tpc-ds包重新执行make命令生成dsdgen文件
以生成300GB数据为例,通过以下命令来进行生成。
./dsdgen -dir /opt/data -SCALE 300
dsdgen文件常用参数
DIR:数据存放目录。
SCALE:数据量,以GB为单位。
TABLE:生成哪张表的数据,一共有24张表哦。
PARALLEL:生成的数据一共分为多少份,一般生成TB级数据才会用到。
CHILD:当前数据是第几份,与PARALLEL配对使用。
FORCE:强制写入数据。
生成数据的时间随性能而定,生成300GB的数据大概需要六七个小时。
将生成的数据导入GBase 8a数据库
前提需要安装好GBase 8a数据库,安装步骤可以参考以下链接:
https://blog.csdn.net/weixin_43834971/article/details/121554720?spm=1001.2014.3001.5501
使用gccli命令,执行TPC-DS工具包下的建表脚本即可再数据库中创建适用于测试的数据表。
gccli -uroot -f -vvv </opt/create_table_tpcds.sql >> out.log
创建表成功后,即可将数据导入数据库中,可以将24个表的导入语句全部写到一个sql脚本中再执行。
数据导入语句,示例如下:
load data infile 'file://192.168.2.180/opt/tpcds/sqldata/catalog_page.dat' into table tpcds.catalog_page fields terminated by '|';
对24个表分别执行导入语句后,数据就导入成功了,接下来就可以进行TPC-DS测试了
TPC-DS测试
要进行TPC-DS测试,需要使用.sh脚本,批量执行sql语句来完成。
通过.sh脚本,记录查询语句的时间,结果等。通过for循环的方式,执行TPC-DS工具包中的99条查询语句即可。
需要注意的是,进行TPC-DS测试,可能会需要配置SSH互信,以便测试节点能无需密码和确认访问其他节点。
配置SSH互信
配置ssh config,将测试节点的StrictHostKeyChecking no 修改为 StrictHostKeyChecking ask
vim /etc/ssh/ssh_config
在master节点的/etc/ssh/sshd_config文件中去掉注释
vim /etc/ssh/sshd_config
RSAAuthentication yes #开启私钥验证
PubkeyAuthentication yes #开启公钥验证
之后所有节点使用DBA用户生成公钥、私钥。
ssh-keygen -t rsa -P ''
一路回车即可。
生成之后,将每个节点的id_rsa.pub文件的内容,都追加到测试节点的authorized_keys文件中。
这两个文件,在/home/gbase/.ssh 目录下。
之后重启sshd.service即可
之后验证ssh无密登录。 输入ssh nodeip。
配置SSH完成
Nmon监控
Nmon是一个可以监控服务器资源的工具,可以在TPC-DS测试期间监控服务器性能。
使用yum install nmon来进行安装。
安装后,使用
nmon -s8 -c300 -f -m /opt/nmondata
即可开启监控
-s代表每几秒监控一次
-c代表监控多少次
-f代表文件名中包含时间
-m指向存放监控文件的路径。
将生成的nmon监控文件,导入nmon工具的excel文件或者jar文件中,即可进行图形化分析。
如果想深入了解GBase 8a或有其他问题,欢迎在GBase 8a社区上寻找答案
评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25051
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526
本人环境:三节点,单vc模式,arm架构,虚拟机,节点状态都是open。
我当前执行到数据导入,然后按照网上的操作对query_templates/下的tpl文件进行了修改;
并用指令./dsqgen -DIRECTORY ../query_templates -INPUT ../query_templates/templates.lst -DIALECT ansi -QUALIFY Y -OUTPUT_DIR /home/gbase -STREAMS 99生成了99个sql文件。
自己编写的sh脚本内容如下:
DB_HOST="xx.xx.xx.xx"
DB_PORT="5258"
DB_USER="root"
DB_PASSWORD=""
DB_NAME="tpcds"
# 设置查询文件目录
QUERY_DIR="/home/gbase/sql"
# 设置结果文件目录
RESULT_DIR="/home/gbase/out"
# 创建结果目录(如果不存在)
mkdir -p $RESULT_DIR
# 获取当前日期和时间
DATE=$(date +%Y%m%d%H%M%S)
# 执行TPC-DS查询
for i in {0..98}; do
QUERY_FILE="$QUERY_DIR/query_$i.sql"
RESULT_FILE="$RESULT_DIR/query$i_$DATE.log"
if [ -f "$QUERY_FILE" ]; then
echo "Executing query $i..."
echo "Query: $QUERY_FILE"
echo "Result: $RESULT_FILE"
# 使用GBase 8a的isql工具执行查询并记录时间
gccli -h $DB_HOST -u$DB_USER -P$DB_PORT -D$DB_NAME -i $QUERY_FILE > $RESULT_FILE 2>&1
echo "Query $i executed and result saved to $RESULT_FILE"
else
echo "Query file $QUERY_FILE not found"
fi
done
echo "All TPC-DS queries executed. Results saved in $RESULT_DIR"
执行一直不成功,log文件内容如下:
ERROR 1816 (HY000): Unknown VC '/home/gbase/sql/query_98'
自己查了一下,可能sql中有不支持的语句,所以想问下生成sql文件的指令和测试性能的查询sh脚本是否能提供一下。