中港数据库技术课堂丨华为GaussDB实战演练——案例篇(一)


风晓
风晓 2024-01-12 13:38:48 51623 赞同 0 反对 0
分类: 资源 标签: 国产数据库
中港数据库技术课堂丨华为GaussDB实战演练——案例篇(一)

一、前言

      GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务、同城跨AZ部署、数据0丢失、支持1000+的扩展能力和PB级海量存储。并拥有云上高可用、高可靠、高安全、弹性伸缩、一键部署、快速备份恢复、监控告警等关键能力,能为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务。

图片

二、性能测试的目的
      在数据库上云之前,如何有效评估云上数据库性能是非常重要的,这决定着数据库上云工作能否取得成功,对数据库后续在云上的稳定运行也具有重要意义。
      在进行性能评估之前,我们应先确定数据库架构选型,如主备版还是分布式版;其次应参考云下硬件的配置情况。通常来说,云上购买的数据库规格,至少不应该低于云下数据库主机的性能规格;如果有多个节点的情况,也应该根据业务系统实际情况,在云上选择对应的分片数量,以便进行准确的性能评估。
      本文就以华为云GaussDB主备版为例,去展示对云上数据库的性能测试的实战。

三、测试工具介绍

      GaussDB使用BenchmarkSQL进行性能测试的方法和测试数据报告。
      BenchmarkSQL:一个JDBC基准测试工具,内嵌了TPC-C测试脚本,支持多种数据库,如PostgreSQL、Oracle和Mysql等。
      TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统。几乎所有在OLTP市场提供软硬平台的国外主流厂商都发布了相应的TPC-C测试结果,随着计算机技术的不断发展,这些测试结果也在不断刷新。

四、测试方法

1、修改连接配置

      配置文件所在目录为:./run/props.pg

2、重点参数修改

//连接配置
conn=jdbc:postgresql://127.0.0.1:8000/postgres?autoBalance=true
//连接用户名
user=****
//连接密码
password=****
//压入数据量
warehouses=1000
//压入并发
loadWorkers=10
//业务并发
terminals=2048
//运行时间
runMins=30

3、压数据

cd ~/BenchmarkSQL-5.0/run
./runDatabaseBuild.sh props.pg

4、运行tpcc业务场景

cd ~/BenchmarkSQL-5.0/run
./runBenchmark.sh props.pg

五、建表语句参考

create table bmsql_config (
                 cfg_name    varchar(30),
                 cfg_value   varchar(50)
) DISTRIBUTE BY REPLICATION;
create table bmsql_warehouse (
                w_id        integer   not null,
                w_ytd       decimal(12,2),
                w_tax       decimal(4,4),
                w_name      varchar(10),
                w_street_1  varchar(20),
                w_street_2  varchar(20),
                w_city      varchar(20),
                w_state     char(2),
                w_zip       char(9)
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(w_id);
create table bmsql_district (
   d_w_id       integer       not null,
   d_id         integer       not null,
   d_ytd        decimal(12,2),
   d_tax        decimal(4,4),
   d_next_o_id  integer,
   d_name       varchar(10),
   d_street_1   varchar(20),
   d_street_2   varchar(20),
   d_city       varchar(20),
   d_state      char(2),
   d_zip        char(9)
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(d_w_id);
create table bmsql_customer (
   c_w_id         integer        not null,
   c_d_id         integer        not null,
   c_id           integer        not null,
   c_discount     decimal(4,4),
   c_credit       char(2),
   c_last         varchar(16),
   c_first        varchar(16),
   c_credit_lim   decimal(12,2),
   c_balance      decimal(12,2),
   c_ytd_payment  decimal(12,2),
   c_payment_cnt  integer,
   c_delivery_cnt integer,
   c_street_1     varchar(20),
   c_street_2     varchar(20),
   c_city         varchar(20),
   c_state        char(2),
   c_zip          char(9),
   c_phone        char(16),
   c_since        timestamp,
   c_middle       char(2),
   c_data         varchar(500)
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(c_w_id);
create sequence bmsql_hist_id_seq cache 1000;
create table bmsql_history (
    hist_id  integer,
    h_c_id   integer,
    h_c_d_id integer,
    h_c_w_id integer,
    h_d_id   integer,
    h_w_id   integer,
    h_date   timestamp,
    h_amount decimal(6,2),
    h_data   varchar(24)
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(h_w_id);
create table bmsql_new_order (
    no_w_id  integer   not null,
    no_d_id  integer   not null,
    no_o_id  integer   not null
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(no_w_id);
create table bmsql_oorder (
    o_w_id       integer      not null,
    o_d_id       integer      not null,
    o_id         integer      not null,
    o_c_id       integer,
    o_carrier_id integer,
    o_ol_cnt     integer,
    o_all_local  integer,
    o_entry_d    timestamp
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(o_w_id);
create table bmsql_order_line (
    ol_w_id         integer   not null,
    ol_d_id         integer   not null,
    ol_o_id         integer   not null,
    ol_number       integer   not null,
    ol_i_id         integer   not null,
    ol_delivery_d   timestamp,
    ol_amount       decimal(6,2),
    ol_supply_w_id  integer,
    ol_quantity     integer,
    ol_dist_info    char(24)
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(ol_w_id);
create table bmsql_item (
    i_id     integer      not null,
    i_name   varchar(24),
    i_price  decimal(5,2),
    i_data   varchar(50),
    i_im_id  integer
) DISTRIBUTE BY REPLICATION;
create table bmsql_stock (
    s_w_id       integer       not null,
    s_i_id       integer       not null,
    s_quantity   integer,
    s_ytd        integer,
    s_order_cnt  integer,
    s_remote_cnt integer,
    s_data       varchar(50),
    s_dist_01    char(24),
    s_dist_02    char(24),
    s_dist_03    char(24),
    s_dist_04    char(24),
    s_dist_05    char(24),
    s_dist_06    char(24),
    s_dist_07    char(24),
    s_dist_08    char(24),
    s_dist_09    char(24),
    s_dist_10    char(24)
)WITH (FILLFACTOR=80) DISTRIBUTE BY hash(s_w_id);

六、测试指标

      流量指标(Throughput,简称tpmC):按照TPC组织的定义,流量指标描述了系统在执行支付操作、订单状态查询、发货和库存状态查询这4种交易的同时,每分钟可以处理多少个新订单交易。所有交易的响应时间必须满足TPC-C测试规范的要求,且各种交易数量所占的比例也应该满足TPC-C测试规范的要求。在这种情况下,流量指标值越大说明系统的联机事务处理能力越高。

七、性能评估实战

      注:此处默认GaussDB测试实例已建好。

1、配置benchmarksql

     unzip benchmarksql-5.0.zip
     将Gaussdb JDBC连接驱动放置在/lib/postgres目录下

2、 配置压测参数

    填写JDBC连接串内容、指定压测数据库、数据库会话用户密码等关键信息,并制定warehouses=100,loadworkers-10,运行压测的时间为30分钟。
图片

3、生成压测数据

     使用./runDatabaseBuild.sh props.pg语句启动测试,自动生成并创建表定义,主键外键等信息。
图片

4、进行性能压测

    使用在./runDatabaseBuild.sh props.pg命令,进行压力测试,30分钟后获得以下数据:
图片
      由上面得知,在过去30分钟里,该数据库一共处理了596万笔交易,TPM总和参数tpmTOTAL(TPS)为198665.06。此数据可以评估云上数据库的OLTP处理能力,具有非常实际的意义,为数据库上云的评估提供重要参考。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  123
统信桌面专业版【全盘安装UOS系统】介绍  116
银河麒麟桌面操作系统安装佳能打印机驱动方法  108
银河麒麟桌面操作系统 V10-SP1用户密码修改  102
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益217.85元

3

1843880570 收益214.2元

4

IT-feng 收益208.98元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!