基准测试
作为关系型数据库,Postgresql 具有所有关系型数据库的特征。
测试模型:TPC-C
本小节主要介绍如何创建 benchmark 数据库,并使用满足 TPC-C 基准测试规范的 PostgreSQL 测试工具 BenchmarkSQL 进行基准测试。
步骤一:创建 benchmark 用户和数据库
说明 |
---|
以 benchmark 5.0 版本为例。 |
-
在安装了 PostgreSQL 的服务器上启动 PostgreSQL 并登录。
-
执行以下命令连接数据库,并输入密码:
psql -h 192.168.1.253 -U postgres -d qingcloud
-
执行以下命令创建一个用户和密码:
以用户名为pgtest,密码Zhu88jie为例。
CREATE USER pgtest WITH ENCRYPTED PASSWORD 'Zhu88jie';
-
执行以下命令创建名为benchmarksql的用户数据库:
CREATE DATABASE benchmarksql OWNER benchmarksql;
-
执行\q退出数据库。
步骤二:创建配置文件
-
进入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”修改为所测量的数据库。
参数 参数值 描述 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。
-
-
执行以下命令开始测试:
./runDatabaseDestroy.sh props.pg
步骤三:创建模式并初始化数据库
执行以下命令创建数据库基准:
./runDatabaseBuild.sh props.pg
步骤四:执行测试
执行以下命令用 benchmark 内置脚本测试:
./runBenchmark.sh props.pg