环境
- 环境搭建参考之前写过的文章CentOS7 安装 Gauss DB 200 单节点
server端说明 | 描述 |
---|---|
服务器 | 华为泰山 2280 v2 |
操作系统 | Cent OS 7.6 aarch64 |
数据库版本 | GaussDB_200_6.5.1_RHEL_ARM64 |
cline说明 | 描述 |
---|---|
测试机 | PC【CPU*8 内存*16G 硬盘*512G(ssd)】 |
操作系统 | win10 |
测试工具 | apache-jmeter-5.2.1 |
场景 - 大表JOIN统计查询 (OLAP)
背景
大表join连接查询并做聚合。
设计
3张表,2张1000W数据,1张10W数据,join连接查询并做聚合,100个并发连接在10秒内连接,连续主键查询100W次。
准备
- 创建测试表
drop table if exists t_test04_01;
drop table if exists t_test04_02;
drop table if exists t_test04_03;
create table t_test04_01 (
id serial,
id3 int,
info text default 'sfsluiejldksjfslaueijflsdjflsjfleifeiolfjsl'::text,
state integer default 0,
create_time timestamp without time zone default now(),
modify_time timestamp without time zone default now()
)
with (orientation=row, compression=no)
DISTRIBUTE BY HASH(id)
TO GROUP group_version1;
alter table t_test04_01 add CONSTRAINT t_test04_01_pkey primary key (id);
create index idx_t_test04_01_id3 on t_test04_01(id3);
create table t_test04_02 (like t_test04_01 including all);
create table t_test04_03 (
id serial,
info text default 'sfsluiejldksjfslaueijflsdjflsjfleifeiolfjsl'::text,
state integer default 0,
create_time timestamp without time zone default now(),
modify_time timestamp without time zone default now()
)
with (orientation=row, compression=no)
DISTRIBUTE BY HASH(id)
TO GROUP group_version1;
alter table t_test04_03 add CONSTRAINT t_test04_03_pkey primary key (id);
-- 准备测试数据
insert into t_test04_01(id,id3,state)
select id,trunc(random()*100000) id3,trunc(random()*1000) stat
from generate_series(1,10000000) t(id);
insert into t_test04_02(id,id3,state)
select id,trunc(random()*100000) id3,trunc(random()*1000) stat
from generate_series(1,10000000) t(id);
insert into t_test04_03 (id,state)
select id,trunc(random()*1000) stat
from generate_series(1,100000) t(id);
- 测试语句
select sum(t1.state),avg(t1.state),sum(t2.state),avg(t2.state)
from t_test04_03 t3
inner join t_test04_01 t1 on t1.id3 = t3.id
inner join t_test04_02 t2 on t2.id = t1.id
where t3.id = ${rNumSw}
配置jmeter
-
创建Thread Group
-
创建jdbc连接
-
创建主键值随机数变量
-
创建JDBC Request
-
添加结果监控
测试结果
![](https://img.haomeiwen.com/i19594620/826fd923c8563f61.png)
-
如上图,从JMeter的监控看,总体运行稳定,排除测试工具性能瓶颈影响测试结果的可能性。
-
如上图,在测试期间,数据库资源使用情况明显增加,但是总体运行稳定,压力没有达到数据库性能瓶颈。
-
如上图,Guass DB在本次测试中的吞吐量为每秒460,最快响应时间是12ms,平均响应时间是206ms,有99%的请求响应时间在315ms以内。最长响应时间是6.6s,但最快响应实际与最长响应时间在响应曲线中均没有曲线,属于小概率事件,因此,最快响应时间和最长响应时间指标可忽略。
image.png
网友评论