测试PostgreSQL
- 进入“/home”目录,将“benchmarksql5.0-for-mysql”目录下的所有文件和子目录复制到“benchmarksql5.0-for-postgresql”。
1 2
cd /home cp -r /home/benchmarksql5.0-for-mysql /home/benchmarksql5.0-for-postgresql
- 在已部署好的PostgreSQL数据库创建数据库用户tpcc和数据库tpcc,并赋予tpcc用户超级权限。
1
create database tpcc;
- 修改配置文件。
- 进入BenchmarkSQL的run目录,并打开配置文件。
1 2 3
cd /home/benchmarksql5.0-for-postgresql/run/ cp props.pg my_postgres.properties vi my_postgres.properties
- 修改配置文件中的表1和表2参数,其他部分可使用默认值。
表1 数据库信息参数 参数名称
参数值
参数说明
conn
localhost
表示数据库服务器地址,以实际情况为准。
5432
表示PostgreSQL数据库端口,以实际情况为准。
postgres
表示数据库名称,以实际情况为准,本例中为tpcc。
user
-
修改为创建数据库用户的账号,以实际情况为准。
password
-
修改为创建数据库用户的密码,以实际情况为准。
warehouses
-
初始化加载数据时,需要创建多少仓库的数据。例如输入100,则创建100仓库数据,每一个数据仓库的数据量大概是76823.04KB,可有少量的上下浮动,因为测试过程中将会插入或删除现有记录。
loadworker
-
表示加载数据时,每次提交进程数。
表2 程序执行的场景参数 参数名称
参数说明
terminals
终端数量,指同时有多少终端并发执行,表示并发程度。
runTxnsPerTerminal
每分钟每个终端执行的事务数。
runMins
执行多少分钟。
limitTnxsPermin
每分钟执行的事务总数。
terminalWarehouseFixed
用于指定终端和仓库的绑定模式,设置为true时可以运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。
runMins和runTxnsPerTerminal这两个参数指定了两种运行方式,前者是按照指定运行时间执行,以时间为标准;后者以指定每个终端的事务数为标准执行。两者不能同时生效,必须有一个设定为0。
- 进入BenchmarkSQL的run目录,并打开配置文件。
- 初始化数据。
- 在run目录下执行命令给文件赋予可执行权限。
1
chmod 777 *.sh
如果已经赋予相关权限,不用重复执行当前步骤。
- 加载数据。
1
./runDatabaseBuild.sh my_postgres.properties
创建并初始化表9个表(分别为warehouse,Stock,Item,Order-Line,New-Order,History,District,Customer和Order)和1个配置表。
- 加载数据时,如果提示“there is no unique constraint matching given keys for referenced table”,请参见测试PostgreSQL过程中,无法自动执行索引创建、外键约束创建的解决方法解决该问题。
- 在加载数据量很大的情况下,例如加载500 warehouses的数据时,会提示报错“FATAL: sorry, too many clients already”。可以通过修改postgresql.conf配置文件参数解决该问题,请参见测试PostgreSQL过程中,初始化加载数据时提示too many clients already的解决方法解决该问题。
- 在run目录下执行命令给文件赋予可执行权限。
- 运行BenchmarkSQL程序。
1
./runBenchmark.sh my_postgres.properties
执行结束后,取tpmC (NewOrders)的值作为测试指标。
在数据库性能测试中,tpmC (NewOrders)是一个常用的性能指标,它衡量了在每分钟创建订单的事务数。tpmC (NewOrders)值越大,说明数据库服务器的交易处理能力越强,从而整体性能越高。
- 删除数据库和数据。
1
./runDatabaseDestroy.sh my_postgres.properties