---
title: 测试PostgreSQL
description: "1. 进入“/home”目录，将“benchmarksql5.0-for-mysql”目录下的所有文件和子目录复制到“benchmarksql5.0-for-postgresql”。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/testguide/tstg/kunpengbenchmarksql_06_0005.html
sourcePath: /source/zh/kunpengdbs/testguide/tstg/kunpengbenchmarksql_06_0005.html
indexId: 0442dcc16ddd489a3b83a82016dd84d28f194c5367a5a9cf15be44f43f6acc3769
---
# 测试PostgreSQL

1. 进入“/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

2. 在已部署好的PostgreSQL数据库创建数据库用户tpcc和数据库tpcc，并赋予tpcc用户超级权限。
  1 create database tpcc;

3. 修改配置文件。

  a. 进入BenchmarkSQL的run目录，并打开配置文件。
    1 2 3 cd /home/benchmarksql5.0-for-postgresql/run/ cp props.pg my_postgres.properties vi my_postgres.properties

  b. 修改配置文件中的    表1
和    表2
参数，其他部分可使用默认值。
**表1 数据库信息参数**

| 参数名称 | 参数值 | 参数说明 |
| --- | --- | --- |
| conn | localhost | 表示数据库服务器地址，以实际情况为准。 |
| conn | 5432 | 表示PostgreSQL数据库端口，以实际情况为准。 |
| conn | postgres | 表示数据库名称，以实际情况为准，本例中为tpcc。 |
| user | \- | 修改为创建数据库用户的账号，以实际情况为准。 |
| password | \- | 修改为创建数据库用户的密码，以实际情况为准。 |
| warehouses | \- | 初始化加载数据时，需要创建多少仓库的数据。例如输入100，则创建100仓库数据，每一个数据仓库的数据量大概是76823.04KB，可有少量的上下浮动，因为测试过程中将会插入或删除现有记录。 |
| loadworker | \- | 表示加载数据时，每次提交进程数。 |


**表2 程序执行的场景参数**

| 参数名称 | 参数说明 |
| --- | --- |
| terminals | 终端数量，指同时有多少终端并发执行，表示并发程度。 |
| runTxnsPerTerminal | 每分钟每个终端执行的事务数。 |
| runMins | 执行多少分钟。 |
| limitTxnsPermin | 每分钟执行的事务总数。 |
| terminalWarehouseFixed | 用于指定终端和仓库的绑定模式，设置为true时可以运行4.x兼容模式，意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。 |


    runMins和runTxnsPerTerminal这两个参数指定了两种运行方式，前者是按照指定运行时间执行，以时间为标准；后者以指定每个终端的事务数为标准执行。两者不能同时生效，必须有一个设定为0。

4. 初始化数据。

  a. 在run目录下执行命令给文件赋予可执行权限。
    1 chmod 777 *.sh

    如果已经赋予相关权限，不用重复执行当前步骤。

  b. 加载数据。
    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的解决方法解决该问题。

5. 运行BenchmarkSQL程序。
  1 ./runBenchmark.sh my_postgres.properties

  执行结束后，取tpmC (NewOrders)的值作为测试指标。

  在数据库性能测试中，tpmC (NewOrders)是一个常用的性能指标，它衡量了在每分钟创建订单的事务数。tpmC (NewOrders)值越大，说明数据库服务器的交易处理能力越强，从而整体性能越高。

6. 删除数据库和数据。
  1 ./runDatabaseDestroy.sh my_postgres.properties
