GBase 8a
性能调优
文章

使用TPC-DS对GBase 8a进行性能测试

发表于2024-03-15 15:06:03257次浏览3个评论

什么是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社区上寻找答案

 

 

 

 

 

 

 

 

 

 


 

评论

登录后才可以发表评论
GBase用户25411发表于 1年前
请问一下执行查询的sh脚本能提供一下吗?
本人环境:三节点,单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脚本是否能提供一下。
用户头像
levvel发表于 9个月前
来报个到
用户头像
柒柒天晴发表于 2个月前
学习了