作为关系型数据库,Postgresql 具有所有关系型数据库的特征。

测试模型:TPC-C

本小节主要介绍如何创建 benchmark 数据库,并使用满足 TPC-C 基准测试规范的 PostgreSQL 测试工具 BenchmarkSQL 进行基准测试。

步骤一:创建 benchmark 用户和数据库

说明

以 benchmark 5.0 版本为例。

  1. 在安装了 PostgreSQL 的服务器上启动 PostgreSQL 并登录。

  2. 执行以下命令连接数据库,并输入密码:

    psql -h 192.168.1.253 -U postgres -d qingcloud
    bhm 01
  3. 执行以下命令创建一个用户和密码:

    以用户名为pgtest,密码Zhu88jie为例。

    CREATE USER pgtest WITH ENCRYPTED PASSWORD 'Zhu88jie';
    bhm 02
  4. 执行以下命令创建名为benchmarksql的用户数据库:

    CREATE DATABASE benchmarksql OWNER benchmarksql;
    bhm 03
  5. 执行\q退出数据库。

步骤二:创建配置文件

  1. 进入run目录,复制props.pg文件并比编辑产生的副本,设置与基准测试有关的参数,分别执行以下命令:

    $ cd run
    $ cp props.pg my_postgres.properties
    $ vi my_postgres.properties

    首次实验时,首先修改下面的参数:

    • “conn=jdbc:postgresql://localhost:5432/postgres”修改为“conn=jdbc:postgresql://192.168.1.253:5432/qingcloud”。

    • “localhost”修改为 postgresql 所在服务器的 IP 地址。

    • “5432”修改为 postgresql 所在的端口。

    • “postgres”修改为所测量的数据库。

      bhm 07
    参数 参数值 描述

    warehouses

    1

    初始化加载数据时,需要创建多少仓库的数据。每仓库约 80MB 数据,数量根据实际服务器内存配置。

    loadWorkers

    4

    表示加载数据时,开启加载数据的进程数,加载速度会随 worker 数量的增加而有所提升。

    terminals

    1

    终端数量,指同时有多少终端并发执行,通常设置为 CPU 线程总数的 2~6 倍。

    runTxnsPerTerminal

    10

    每个终端(terminal)运行的固定事务数量,例如:如果该值设置为 10,意味着每个 terminal 运行 10 个事务,如果有 32 个终端,那整体运行320 个事务后,测试结束。该参数配置为非 0 值时,下面的 runMins 参数必须设置为 0。

    runMins

    0

    要测试的整体时间,单位为分钟,如果 runMins 设置为 60,那么测试持续 1 小时候结束。该值设置为非 0 值时,runTxnsPerTerminal 参数必须设置为 0。这两个参数不能同时设置为正整数,如果设置其中一个,另一个必须为 0,主要区别是 runMins 定义时间长度来控制测试时间;runTxnsPerTerminal定义事务总数来控制时间。

    limitTnxsPermin

    300

    限制每分钟执行的事务总数。0 表示不限制。

    terminalWarehouseFixed

    true

    • 用于指定终端和仓库的绑定模式,设置为 true 时可以运行 4.x 兼容模式,意思为每个终端都有一个固定的仓库。

    • 设置为false时可以均匀的使用数据库整体配置,TPCC 规定每个终端都必须有一个绑定的仓库,所以一般使用默认值 true。

  2. 执行以下命令开始测试:

    ./runDatabaseDestroy.sh props.pg
    bhm 04

步骤三:创建模式并初始化数据库

执行以下命令创建数据库基准:

./runDatabaseBuild.sh props.pg
bhm 05

步骤四:执行测试

执行以下命令用 benchmark 内置脚本测试:

./runBenchmark.sh props.pg
bhm 06