create_table.sql文件路径:
SSB/create_table.sql
数据生成方法
SSB/data路径下执行:
./dbgen-s1000-Ta
生成10scales的测试数据
数据量
(1)lineorder表:
数据文件605G数据条数5999989813
(2)customer表:
数据文件2.7GB数据条数3000000
(3)part表:
数据文件164GB数据条数2000000
(4)dwdate表:
数据文件224K数据条数2556
(5)supplier表:
818MB数据条数10000000
测试数据加载
表一:
lineorder
表二:
Supplier
表三:
Customer
表四:
Dwdate
表五:
Part
入库后数据量:
测试内容
测试项目
1.SSMB库13个标准sql的串行执行测试。
通过此项目测试旨在评估每个标准查询sql在该环境下的性能表现。
以便甄选出能够代表并发测试的sql。
2.小查询并发性能测试
通过此项目测试旨在评估查询时间短,且返回数据量小个查询在GBase8a_MPP集群数据环境的并发性能表现。
3.大查询并发性能测试
通过此项目测试旨在评估查询时间较长,且返回数据量较大的查询在GBase8a_MPP集群数据环境的并发性能表现。
4.并发插入性能测试
通过此项目测试旨在评估批量插入类sql,在GBase8a_MPP集群数据环境的并发性能表现。
5.并发加载性能测试
通过此项目测试旨在评估批量插入类sql,在GBase8a_MPP集群数据环境的并发性能表现。
测试内容
SSBM是一个以星型模式为基准的标准测试模型。
它被设计用来评估数据库系统星型模式查询的性能。
它的模型是基于TPC-H基准的,本模型通常被用来测试一些主要的商业及数据库产品在Linux操作系统上的星型模式性能表现。
13个标准sql的串行执行测试
测试项目编号
T01
测试目的
测试13个标准查询SQL,在1000scale数据量下
单独执行性能,考察每个SQL的运行时间
测试对象
详见附件(标准查询13个SQL)
测试准备
(1)使用gbase用户将SSB测试包ssb.tar.gz(详见附件)上传至服务器/opt目录下
(2)在/opt目录下解压ssb.tar.gz包并进入该目录
tar–xvfssb.tar.gzcd/SSB
(3)生成初始数据。
gbase用户执行
./run_ssb.sh-i1000(1000代表1000scale)
(4)脚本执行完成后,测试数据库已建立完成,数据库表已建立完成,数据文件生成,数据加载已完成,可到ssbm下查看:
customerdwdatelineorderpartsupplier有5个表中有数据生成
测试场景
数据库版本:
GBase8a_MPP_Cluster-8.5.1.2_build11.4_r15-redhat6.2-x86_64.tar.bz2
客户端:
SecureCRT,通过CRT远程登陆数据库服务器
测试数据库名称:
ssbm
工具
通过调用gbase客户端命令执行:
gccli–pgbase–ugbase–vvv–f<./trace_sql/X.sql(X分别代表1-13)
测试步骤
(1)Gbase用户分别执行:
gccli–pgbase–ugbase–vvv–f<./trace_sql/X.sql(X分别代表1-13)
(2)13个SQL,每个SQL的运行结果会在屏幕上显示。
预期结果
在1000scale数据量下,多数SQL在10s执行完成。
实际结果
详细测试结果请参见测试结果4.1.1
小查询并发性能测试
测试项目编号
T02
测试目的
测试标准查询SQL1,在10scale数据量下
200并发的执行性能。
测试对象
详见附件(标准查询13个SQL)
测试准备
使用gbase用户将测试脚本ss1.sh(详见附件)copy至SSB目录,赋予执行权限:
chmod+xss1.sh
测试场景
数据库版本:
GBase8a_MPP_Cluster-8.5.1.2_build11.4_r15-redhat6.2-x86_64.tar.bz2
客户端:
SecureCRT,通过CRT远程登陆数据库服务器
测试数据库名称:
ssbm
工具
测试脚本请详见附件ss1.sh
测试步骤
(1)在SSB目录下,使用gbase用户执行:
./ss1.sh200(其中参数200为并发量)程序将根据参数200,对数据库进行200并发的测试
(2)并发运行结果文件会生成至:
SSB/expect目录下
预期结果
在1000scale数据量,200并发下,多数SQL执行时长在12秒内,少数在17秒内。
注:
大并发场景下,由于资源争抢,执行时会有等待,因此要比空负载单独执行要慢。
实际结果
详细测试结果请参见以下附件
(注:
包中文件名x.SQL1.rt中x代表执行顺序)
大查询并发性能测试
测试项目编号
T03
测试目的
测试标准查询SQL12,在1000scale数据量下
100并发的执行性能。
测试对象
详见附件(标准查询13个SQL)
测试准备
使用gbase用户将测试脚本ss.sh(详见附件)copy至SSB目录,赋予执行权限:
chmod+xss.sh
测试场景
数据库版本:
GBase8a_MPP_Cluster-8.5.1.2_build11.4_r15-redhat6.2-x86_64.tar.bz2
客户端:
SecureCRT,通过CRT远程登陆数据库服务器
测试数据库名称:
ssbm
工具
测试脚本请详见附件ss.sh
测试步骤
(1)在SSB目录下,使用gbase用户执行:
./ss.sh100(其中参数100为并发量)程序将根据参数100,对数据库进行100并发的测试
(2)并发运行结果文件会生成至:
SSB/expect目录下
预期结果
在1000scale数据量,100并发下,多数SQL执行时长在5分钟秒内。
注:
大并发场景下,由于资源争抢,执行时会有等待,因此要比空负载单独执行要慢。
实际结果
详细测试结果请参见以下附件
(注:
包中文件名x.SQL1.rt中x代表执行顺序)
测试结论
大部分并发查询速度控制在4分钟内,少部分控制在5分钟内。
因此测试结果与预期相近。
并发插入性能测试
测试项目编号
T04
测试目的
测试标准查询SQL12(经改造成insert),在1000scale数据量下
50并发的执行性能。
测试对象
50个经过改造的SQL12(将原SQL12改造insert类)
详见附件
测试准备
将查询SQL12改造成insert类后,需要在库内新建表test12_x(x为1-50)
使用gbase用户将批量建表脚本cttest12.sh(详见附件)copy至SSB目录,赋予执行权限:
chmod+xcttest12.sh
执行./cttest12.sh即可新建表test12_x(x为1-50)以便模拟并发插入
测试场景
数据库版本:
GBase8a_MPP_Cluster-8.5.1.2_build11.4_r15-redhat6.2-x86_64.tar.bz2
客户端:
SecureCRT,通过CRT远程登陆数据库服务器
测试数据库名称:
ssbm
工具
测试脚本请详见附件inss.sh
测试步骤
(1)在SSB目录下,使用gbase用户执行:
./inss.sh50(其中参数50为并发量)程序将根据参数50,对数据库进行50并发的批量插入测试
(2)并发运行结果文件会生成至:
SSB/expect目录下
预期结果
在1000scale数据量,50并发下,多数SQL执行时长在2分钟秒内。
注:
大并发场景下,由于资源争抢,执行时会有等待,因此要比空负载单独执行要慢。
实际结果
详细测试结果请参见以下附件
(注:
包中文件名x.rt中x代表执行顺序)
测试结论
大部分并发批量插入速度全部控制在2分钟内。
因此测试结果与预期相符。
并发加载性能测试
测试项目编号
T05
测试目的
测试lineorder表,在100scale数据量下,分3个加载池分别并行进行加载,记录集群性能。
测试对象
ssbm库lineorder表
测试准备
(1)按照lineorder表结构,新建表lineorder01lineorder02lineorder03,以便分池加载时互不影响。
(2)使用三台加载机启动加载进程。
测试场景
数据库版本:
GBase8a_MPP_Cluster-8.5.1.2_build11.4_r15-redhat6.2-x86_64.tar.bz2
客户端:
SecureCRT,通过CRT远程登陆数据库服务器
测试数据库名称:
ssbm
工具
无
测试步骤
在三台服务器上分别启动加载程序。
预期结果
多进程加载性能达到1TB以上。
注:
大并发场景下,由于资源争抢,执行时会有等待,因此要比空负载单独执行要慢。
实际结果
见章节4.1.3
性能测试结果
测试结果
十三条sql
36节点
48节点
第一次
第二次
第一次
SQL1
0.84
0.50
0.33
SQL2
0.11
0.13
0.15
SQL3
0.09
0.11
0.12
SQL4
11.98
8.54
5.57
SQL5
9.81
10.37
4.09
SQL6
6.82
5.47
3.27
SQL7
40.55
40.00
25.13
SQL8
11.73
11.41
7.95
SQL9
6.72
5.42
4.12
SQL10
1.12
1.05
0.79
SQL11
35.11
32.72
27.45
SQL12
14.21
15.02
11.37
SQL13
3.39
3.53
2.72
Sum
142.48
134.27
93.06
并发性能
200小查询
小查询性能测试,大部分sql的执行时间在8秒到15秒之间浮动。
100大查询
大查询并发性能测试,大部分sql的执行时间在200秒到250秒浮动。
50并发插入
50并发插入测试,大部分sql的执行时间在120秒到150秒之间浮动。
加载性能
三台加载机同时进行数据加载,1小时的加载性能达到2TB,单台服务器启动两个加载进程进行加载,加载性能达到1.25TB。
三加载机
单加载机两进程
节点4
节点10
节点16
端口6666
端口7777
数据量(G)
59G
59G
59G
59G
59G
单片性能(M)
5.9M
5.6M
5.4M
5M
5M
加载时间(s)
295
306
309
338
336
平均性能(M)
5.68M
5.48M
5.43M
4.96M
4.99M
单个加载机(h)
708G
693G
687G
627G
631G
总体性能(h)
2.09T
1.25T
1、三加载机测试过程
使用三台加载机分别往集群的三个表进行加载,增加了两个参数--segment=2M和send_block_size=4M,测试结果单片数据加载从2M提升到5M。
控制文件:
[root@pc-zjqbmpp13load_data]#catlineorder3.ctl
[lineorder]
disp_server=10.78.154.16:
6666
format=3
db_name=ssbm
table_name=lineorder3
delimiter='|'
socket=/tmp/gbase_8a_5050.sock
extra_loader_args=--parallel=4--segment=2M
file_list=/opt/SSB/data/data_times_100/lineorder.tbl
hash_parallel=4
send_block_size=4M
2、单加载机多进程
同一台加载机,使用两个加载进程分别往两个服务器上进行加载。
[root@pc-zjqbmpp07load_data]#cat*.ctl
[lineorder]
disp_server=10.78.154.10:
7777
format=3
db_name=ssbm
table_name=lineorder1
delimiter='|'
socket=/tmp/gbase_8a_5050.sock
extra_loader_args=--parallel=4--segment=2M
file_list=/opt/data_times_100/lineorder.tbl
hash_parallel=4
send_block_size=4M
[lineorder]
disp_server=10.78.154.10:
6666
format=3
db_name=ssbm
table_name=lineorder2
delimiter='|'
socket=/tmp/gbase_8a_5050.sock
extra_loader_args=--parallel=4--segment=2M
file_list=/opt/data_times_100/lineorder.tbl
hash_parallel=4
send_block_size=4M
3、
加载速度
进程6666:
进程7777:
测试资源使用情况
十三条sql执行过程
在两次执行过程中,
集群节点CPU
集群节点磁盘
集群节点剩余情况
集群节点网络
Sql并发压力测试
集群节点磁盘
集群节点剩余情况
集群节点网络
三加载机并发加载
加载机CPU
加载机磁盘
加载机内存
加载机网络
单加载机多加载进程测试
加载机CPU
加载机磁盘
加载机内存
加载机网络
附件
标准查询13个SQL
经改造的SQL12
ssb测试包
4.2测试脚本
脚本一(ss1.sh)
脚本二(ss.sh)
脚本三(cttest12.sh)
脚本四(inss.sh)