Gauss DB 场景与性能测试之 5- (OLAP) 大表JOIN统计查询

环境

  • 环境搭建参考之前写过的文章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


  • 添加结果监控


测试结果

  • 如上图,从JMeter的监控看,总体运行稳定,排除测试工具性能瓶颈影响测试结果的可能性。


  • 如上图,在测试期间,数据库资源使用情况明显增加,但是总体运行稳定,压力没有达到数据库性能瓶颈。


  • 如上图,Guass DB在本次测试中的吞吐量为每秒460,最快响应时间是12ms,平均响应时间是206ms,有99%的请求响应时间在315ms以内。最长响应时间是6.6s,但最快响应实际与最长响应时间在响应曲线中均没有曲线,属于小概率事件,因此,最快响应时间和最长响应时间指标可忽略。


    image.png

你可能感兴趣的:(Gauss DB 场景与性能测试之 5- (OLAP) 大表JOIN统计查询)