关于数据库的压力测试,之前写过3篇Blog:

数据库基准测试(Database Benchmarking) 说明

数据库压力测试工具 -- Hammerdb 使用说明

数据库压力测试工具 -- Swingbench 使用说明

今天看下BenchmarkSQL 工具的使用。

1BenchmarkSQL 说明

BenchmarkSQL 可以从sourceforge上直接下载:

对于BenchmarkSQL,官方的解释如下:

An easy to use JDBC benchmark that closely resembles the TPC-C standard for OLTP. DB's supported include PostgreSQL/EnterpriseDB, DB2, Oracle, SQLSvr, MySQL.

简单点说,就是一个通过JDBC 测试OLTP 的TPC-C。 支持PostgreSQL/EnterpriseDB, DB2, Oracle, SQLSvr, MySQL.

在安装文件中中,有一个HOW TO RUN的说明文档,里面描述了具体的使用方法:

Instructions for running

------------------------

Use of JDK7 is required.   Sample JDBC Connection Property files are provided as follows:

props.pg  : for PostgreSQL/EnterpriseDB

props.ora : for Oracle

0. As the user postgres, create the benchmarksql user with correct permissions.

postgres=# CREATE USER benchmarksql WITH SUPERUSER PASSWORD 'password';

postgres=# GRANT ALL PRIVILEGES ON DATABASE postgres TO benchmarksql;

1. Go to the 'run' directory, edit the appropriate "props.???"

file to point to the database instance you'd like to test.

2. Run the "sqlTableCreates" to create the base tables.

$ ./runSQL.sh props.pg sqlTableCreateshttps://www.cndba.cn/dave/article/115

3. Run the Loader command file to load all of the default data for a benchmark:

A.) Approximately half a million rows (per Warehouse) will be loaded across 9 tables.

$ ./runLoader.sh props.pg numWarehouses 1

NOTE: You should run the sqlTableTruncates scripts if your tables are not already empty.

B.) Alternatively, for PostgreSQL you may choose to generate the load data out to CSV files where it can be efficiently

bulk loaded into the database as many times as required by your testing.

$ ./runLoader.sh props.pg numWarehouses 1 fileLocation /tmp/csv/

These CSV files can be bulk loaded as follows:

$  ./runSQL.sh props.pg sqlTableCopies

You may truncate the data via:

$  ./runSQL.sh props.pg sqlTableTruncates

4. Run the "runSQL" command file to execute the SQL script "sqlIndexCreates" to create the primary keys & other indexes  on the tables.https://www.cndba.cn/dave/article/115

$  ./runSQL.sh props.pg sqlIndexCreates

5. Run the "runBenchmark" command file to test the database. This command will create terminals and automatically start the transaction based on  the parameters set in "props".

$  ./runBenchmark.sh props.pg

2BenchmarkSQL 使用示例

上节复制的how to run 文本内容有具体的使用方法,我们这里已Oracle 数据库为例,记录测试方法。https://www.cndba.cn/dave/article/115

2.1 安装BenchmarkSQL

下载后直接解压缩:

[root@cndba.cn ~]# unzip benchmarksql-4.1.0.zip

[root@cndba.cn benchmarksql-4.1.0]# pwd

/root/benchmarksql-4.1.0

[root@cndba.cn benchmarksql-4.1.0]# ls

build  build.xml  dist  HOW-TO-RUN.txt  lib  README.txt  run  src

[root@cndba.cn benchmarksql-4.1.0]#

修改目录权限:

[root@cndba.cn ~]# chown -R oracle:oinstall benchmarksql-4.1.0

2.2 修改变量信息

进入run目录,修改数据库实例的信息:

[root@cndba.cn run]# pwd

/root/benchmarksql-4.1.0/run

[root@cndba.cn run]# ls

clean.sh  log4j.xml  props.pg         runLoader.sh  sqlIndexCreates  sqlTableCopies   sqlTableDrops

log       props.ora  runBenchmark.sh  runSQL.sh     sqlIndexDrops    sqlTableCreates  sqlTableTruncates

[root@cndba.cn run]#

我们测试的是Oracle 数据库,对应的文件是props.ora。 如果是postgresql,那么对应的文件是:props.pg。

创建测试用户benchmarksql:

SQL> create user benchmarksql identified by benchmarksql;

User created.

SQL> grant connect,resource,dba to benchmarksql;

Grant succeeded.

修改props.ora文件:

[oracle@cndba.cn run]$ cat props.ora

driver=oracle.jdbc.driver.OracleDriver

conn=jdbc:oracle:thin:@localhost:1521:cndba

user=benchmarksql

password=benchmarksql

warehouses=1

terminals=1

//To run specified transactions per terminal- runMins must equal zero

runTxnsPerTerminal=10

//To run for specified minutes- runTxnsPerTerminal must equal zero

runMins=0

//Number of total transactions per minute

limitTxnsPerMin=300

//The following five values must add up to 100

newOrderWeight=45

paymentWeight=43

orderStatusWeight=4

deliveryWeight=4

stockLevelWeight=4

2.3 创建基表

还在run命令下runSQL.sh 加sqlTableCreates选项来创建基表。

在运行之前,还需要先修改一下runSQL.sh 脚本,修改jar包类型,BenchmarkSQL 默认只有postgresql 的jar包。

[oracle@cndba.cn lib]$ pwd

/u01/app/oracle/product/11.1.0/db_1/jdbc/lib

[oracle@cndba.cn lib]$ ls

ojdbc6dms_g.jar  ojdbc6_g.jar  ojdbc7dms_g.jar  ojdbc7_g.jar  simplefan.jar

ojdbc6dms.jar    ojdbc6.jar    ojdbc7dms.jar    ojdbc7.jar

把Oracle 目录下的jar包复制到BenchMarkSQL 的lib下。

[oracle@cndba.cn lib]$ cp ojdbc6.jar /u01/benchmarksql-4.1.0/lib/

[oracle@ cndba.cn lib]$

修改runSQL.sh:

https://www.cndba.cn/dave/article/115

[oracle@ cndba.cn run]$ cat runSQL.sh

myCP="../lib/ojdbc6.jar"

myCP="$myCP:../dist/BenchmarkSQL-4.1.jar"

myOPTS="-Dprop=$1"

myOPTS="$myOPTS -DcommandFile=$2"

java -cp .:$myCP $myOPTS ExecJDBC

[oracle@ cndba.cn run]$

最后执行创建脚本:

[oracle@cndba.cn run]$ ./runSQL.sh props.ora sqlTableCreates

DROP SCHEMA IF EXISTS benchmarksql CASCADE;

ORA-00950: invalid DROP option

CREATE SCHEMA benchmarksql;

ORA-02420: missing schema authorization clause

create table benchmarksql.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)

);

create table benchmarksql.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)

);

create table benchmarksql.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  float,

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)

);

create sequence hist_id_seq;

create table benchmarksql.history (

hist_id  integer not null default nextval('hist_id_seq') primary key,

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)

);

ORA-00907: missing right parenthesis

create table benchmarksql.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     decimal(2,0),

o_all_local  decimal(1,0),

o_entry_d    timestamp

);

create table benchmarksql.new_order (

no_w_id  integer   not null,

no_d_id  integer   not null,

no_o_id  integer   not null

);

create table benchmarksql.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     decimal(2,0),

ol_dist_info    char(24)

);

create table benchmarksql.stock (

s_w_id       integer       not null,

s_i_id       integer       not null,

s_quantity   decimal(4,0),

s_ytd        decimal(8,2),

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)

);

create table benchmarksql.item (

i_id     integer      not null,

i_name   varchar(24),

i_price  decimal(5,2),

i_data   varchar(50),

i_im_id  integer

);

[oracle@cndba.cn run]$

SQL> select table_name from user_tables;

TABLE_NAME

------------------------------------------------------------

WAREHOUSE

DISTRICT

CUSTOMER

OORDER

NEW_ORDER

ORDER_LINE

STOCK

ITEM

8 rows selected.

上面的历史表出现错误:

create sequence hist_id_seq;

create table benchmarksql.history (

hist_id  integer not null default nextval('hist_id_seq') primary key,

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)

);

ORA-00907: missing right parenthesis

这里可以看出来,这里的主键是一个自增的值。但是Oracle 12c之前,并不支持自增。 所以从这点上可以看出,BenchmarkSQL虽然支持Oracle,但更主要还是对Postgresql数据库的支持,对O的支持,并不友好。

https://www.cndba.cn/dave/article/115

2.4 加载默认数据

[oracle@cndba.cn run]$ cat runLoader.sh

java -cp .:../lib/ojdbc6.jar:../dist/BenchmarkSQL-4.1.jar -Dprop=$1 LoadData $2 $3 $4 $5

[oracle@cndba.cn run]$

[oracle@cndba.cn run]$ ./runLoader.sh props.ora numWarehouses 1

Starting BenchmarkSQL LoadData

----------------- Initialization -------------------

numWarehouses

1

driver=oracle.jdbc.driver.OracleDriver

conn=jdbc:oracle:thin:@localhost:1521:cndba

user=system

password=******

------------- LoadData StartTime = Mon Dec 21 17:45:40 CST 2015-------------

Start Whse Load for 1 Whses @ Mon Dec 21 17:45:40 CST 2015 ...

Elasped Time(ms): 0.046

End Whse Load @  Mon Dec 21 17:45:40 CST 2015

Start Item Load for 100000 Items @ Mon Dec 21 17:45:40 CST 2015 ...

Elasped Time(ms): 0.267       Writing record 10000 of 100000

Elasped Time(ms): 0.7         Writing record 20000 of 100000

Elasped Time(ms): 0.289       Writing record 30000 of 100000

Elasped Time(ms): 0.185       Writing record 40000 of 100000

Elasped Time(ms): 0.137       Writing record 50000 of 100000

Elasped Time(ms): 0.128       Writing record 60000 of 100000

Elasped Time(ms): 0.129       Writing record 70000 of 100000

Elasped Time(ms): 0.125       Writing record 80000 of 100000

Elasped Time(ms): 0.13        Writing record 90000 of 100000

Elasped Time(ms): 0.118       Writing record 100000 of 100000

Elasped Time(ms): 0.077       Writing final records 100000 of 100000

End Item Load @  Mon Dec 21 17:45:42 CST 2015

Start Stock Load for 100000 units @ Mon Dec 21 17:45:42 CST 2015 ...

Elasped Time(ms): 0.369       Writing record 10000 of 100000

Elasped Time(ms): 0.814       Writing record 20000 of 100000

Elasped Time(ms): 0.522       Writing record 30000 of 100000

Elasped Time(ms): 0.573       Writing record 40000 of 100000

Elasped Time(ms): 0.531       Writing record 50000 of 100000

Elasped Time(ms): 0.536       Writing record 60000 of 100000

Elasped Time(ms): 0.48        Writing record 70000 of 100000

Elasped Time(ms): 0.506       Writing record 80000 of 100000

Elasped Time(ms): 0.537       Writing record 90000 of 100000

Elasped Time(ms): 0.592       Writing record 100000 of 100000

Elasped Time(ms): 0.309       Writing final records 100000 of 100000

End Stock Load @  Mon Dec 21 17:45:48 CST 2015

Start District Data for 10 Dists @ Mon Dec 21 17:45:48 CST 2015 ...

Elasped Time(ms): 0.035       Writing record 10 of 10

End District Load @  Mon Dec 21 17:45:48 CST 2015

Start Cust-Hist Load for 60000 Cust-Hists @ Mon Dec 21 17:45:48 CST 2015 ...

Elasped Time(ms): 0.789       Writing record 10000 of 60000

ORA-00942: table or view does not exist

whse=1, dist=10, cust=3000

Start Order-Line-New Load for approx 340000 rows @ Mon Dec 21 17:45:49 CST 2015 ...

Elasped Time(ms): 0.917       Writing record 10000 of 340000

Elasped Time(ms): 0.156       Writing record 20000 of 340000

Elasped Time(ms): 0.139       Writing record 30000 of 340000

Elasped Time(ms): 0.169       Writing record 40000 of 340000

Elasped Time(ms): 0.14        Writing record 50000 of 340000

Elasped Time(ms): 0.171       Writing record 60000 of 340000

Elasped Time(ms): 0.091       Writing record 70000 of 340000

Elasped Time(ms): 0.098       Writing record 80000 of 340000

Elasped Time(ms): 0.089       Writing record 90000 of 340000

Elasped Time(ms): 0.082       Writing record 100000 of 340000

Elasped Time(ms): 0.094       Writing record 110000 of 340000

Elasped Time(ms): 0.145       Writing record 130000 of 340000

Elasped Time(ms): 0.147       Writing record 140000 of 340000

Elasped Time(ms): 0.092       Writing record 150000 of 340000

Elasped Time(ms): 0.127       Writing record 170000 of 340000

Elasped Time(ms): 0.13        Writing record 180000 of 340000

Elasped Time(ms): 0.101       Writing record 190000 of 340000

Elasped Time(ms): 0.085       Writing record 200000 of 340000

Elasped Time(ms): 0.101       Writing record 210000 of 340000

Elasped Time(ms): 0.111       Writing record 220000 of 340000

Elasped Time(ms): 0.131       Writing record 240000 of 340000

Elasped Time(ms): 0.183       Writing record 250000 of 340000

Elasped Time(ms): 0.083       Writing record 260000 of 340000

Elasped Time(ms): 0.158       Writing record 280000 of 340000

Elasped Time(ms): 0.18        Writing record 290000 of 340000

Elasped Time(ms): 0.093       Writing record 300000 of 340000

Elasped Time(ms): 0.097       Writing record 310000 of 340000

Elasped Time(ms): 0.098       Writing record 320000 of 340000

Elasped Time(ms): 0.102       Writing record 330000 of 340000

Writing final records 338073 of 340000

End Orders Load @  Mon Dec 21 17:45:53 CST 2015

------------- LoadJDBC Statistics --------------------

Start Time = Mon Dec 21 17:45:40 CST 2015

End Time = Mon Dec 21 17:45:53 CST 2015

Run Time = 13 Seconds

Rows Loaded = 548084 Rows

Rows Per Second = 42160 Rows/Sec

------------------------------------------------------

[oracle@cndba.cn run]$

2.5 创建索引

[oracle@cndba.cn run]$ ./runSQL.sh props.ora sqlIndexCreates

alter table benchmarksql.warehouse add constraint pk_warehouse

primary key (w_id);

alter table benchmarksql.district add constraint pk_district

primary key (d_w_id, d_id);

alter table benchmarksql.customer add constraint pk_customer

primary key (c_w_id, c_d_id, c_id);

create index ndx_customer_name

on  benchmarksql.customer (c_w_id, c_d_id, c_last, c_first);

select setval('hist_id_seq', (select max(hist_id) + 1 from benchmarksql.history), false);

ORA-00923: FROM keyword not found where expected

alter table benchmarksql.oorder add constraint pk_oorder

primary key (o_w_id, o_d_id, o_id);

create unique index ndx_oorder_carrier

on  benchmarksql.oorder (o_w_id, o_d_id, o_carrier_id, o_id);

alter table benchmarksql.new_order add constraint pk_new_order

primary key (no_w_id, no_d_id, no_o_id);

alter table benchmarksql.order_line add constraint pk_order_line

primary key (ol_w_id, ol_d_id, ol_o_id, ol_number);

alter table benchmarksql.stock add constraint pk_stock

primary key (s_w_id, s_i_id);

alter table benchmarksql.item add constraint pk_item

primary key (i_id);

vacuum analyze;

ORA-00900: invalid SQL statement

exec dbms_stats.gather_schema_stats('benchmarksql');

2.6 执行测试

修改runBenchmark.sh 脚本。

[oracle@cndba.cn run]$ cat runBenchmark.sh

java -cp .:../lib/ojdbc6.jar:../lib/log4j-1.2.17.jar:../lib/apache-log4j-extras-1.1.jar:../dist/BenchmarkSQL-4.1.jar -Dprop=$1 jTPCC

[oracle@cndba.cn run]$

[oracle@cndba.cn run]$ ./runBenchmark.sh props.ora

2015-12-21 17:50:55,318  INFO - Term-00,

2015-12-21 17:50:55,320  INFO - Term-00, +-------------------------------------------------------------+

2015-12-21 17:50:55,321  INFO - Term-00,      BenchmarkSQL v4.1

2015-12-21 17:50:55,322  INFO - Term-00, +-------------------------------------------------------------+

2015-12-21 17:50:55,323  INFO - Term-00,  (c) 2003, Raul Barbosa

2015-12-21 17:50:55,323  INFO - Term-00,  (c) 2004-2014, Denis Lussier

2015-12-21 17:50:55,323  INFO - Term-00, +-------------------------------------------------------------+

2015-12-21 17:50:55,324  INFO - Term-00,

2015-12-21 17:50:55,325  INFO - Term-00, driver=oracle.jdbc.driver.OracleDriver

2015-12-21 17:50:55,326  INFO - Term-00, conn=jdbc:oracle:thin:@localhost:1521:cndba

2015-12-21 17:50:55,326  INFO - Term-00, user=system

2015-12-21 17:50:55,327  INFO - Term-00,

2015-12-21 17:50:55,328  INFO - Term-00, warehouses=1

2015-12-21 17:50:55,328  INFO - Term-00, terminals=1

2015-12-21 17:50:55,328  INFO - Term-00, runTxnsPerTerminal=10

2015-12-21 17:50:55,329  INFO - Term-00, limitTxnsPerMin=300

2015-12-21 17:50:55,329  INFO - Term-00,

2015-12-21 17:50:55,329  INFO - Term-00, newOrderWeight=45

2015-12-21 17:50:55,329  INFO - Term-00, paymentWeight=43

2015-12-21 17:50:55,330  INFO - Term-00, orderStatusWeight=4

2015-12-21 17:50:55,330  INFO - Term-00, deliveryWeight=4

2015-12-21 17:50:55,330  INFO - Term-00, stockLevelWeight=4

2015-12-21 17:50:55,330  INFO - Term-00,                                                                                2015-12-21 17:50:56,432 ERROR - payGetCust() not found! C_ID=680 C_D_ID=2 C_W_ID=1

2015-12-21 17:50:56,432 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=1

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=1

2015-12-21 17:50:56,434 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:56,445 ERROR - payGetCust() not found! C_ID=1649 C_D_ID=10 C_W_ID=1

2015-12-21 17:50:56,445 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=2

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=2

2015-12-21 17:50:56,446 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:56,641 ERROR - payGetCust() not found! C_ID=1005 C_D_ID=7 C_W_ID=1

2015-12-21 17:50:56,641 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=3

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=3

2015-12-21 17:50:56,642 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:56,847 ERROR - payGetCust() not found! C_ID=167 C_D_ID=1 C_W_ID=1

2015-12-21 17:50:56,848 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=4

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=4

2015-12-21 17:50:56,850 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:57,058 ERROR - stmtGetCustWhse() not found! W_ID=1 C_D_ID=3 C_ID=1534

2015-12-21 17:50:57,059 ERROR - --- Unexpected SQLException caught in NEW-ORDER Txn ---

2015-12-21 17:50:57,059 ERROR - Exhausted Resultset                                                                     2015-12-21 17:50:57,662 ERROR - payGetCust() not found! C_ID=1772 C_D_ID=2 C_W_ID=1 8MB / 58MBB

2015-12-21 17:50:57,662 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=7

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=7

2015-12-21 17:50:57,662 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:57,866 ERROR - payGetCust() not found! C_ID=540 C_D_ID=10 C_W_ID=1 8MB / 58MB

2015-12-21 17:50:57,866 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=8

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=8

2015-12-21 17:50:57,867 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:58,078 ERROR - payGetCust() not found! C_ID=1785 C_D_ID=3 C_W_ID=1 8MB / 58MB

2015-12-21 17:50:58,079 ERROR - Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=9

Term-01, TERMINAL=Term-01  TYPE=PAYMENT  COUNT=9

2015-12-21 17:50:58,079 ERROR - java.sql.SQLException: Exhausted Resultset

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1270)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)

at jTPCCTerminal.paymentTransaction(Unknown Source)

at jTPCCTerminal.executeTransaction(Unknown Source)

at jTPCCTerminal.executeTransactions(Unknown Source)

at jTPCCTerminal.run(Unknown Source)

at java.lang.Thread.run(Thread.java:744)

2015-12-21 17:50:58,284 ERROR - stmtGetCustWhse() not found! W_ID=1 C_D_ID=9 C_ID=2746B / 58MB

2015-12-21 17:50:58,285 ERROR - --- Unexpected SQLException caught in NEW-ORDER Txn ---

2015-12-21 17:50:58,285 ERROR - Exhausted Resultset                                                                      2015-12-21 17:50:58,686  INFO - Term-00,     Current tpmTOTAL: 12    Memory Usage: 8MB / 58MB

2015-12-21 17:50:58,686  INFO - Term-00,

2015-12-21 17:50:58,686  INFO - Term-00, Measured tpmC (NewOrders) = 48.64

2015-12-21 17:50:58,687  INFO - Term-00, Measured tpmTOTAL = 267.53

2015-12-21 17:50:58,687  INFO - Term-00, Session Start     = 2015-12-21 17:50:56

2015-12-21 17:50:58,687  INFO - Term-00, Session End       = 2015-12-21 17:50:58

2015-12-21 17:50:58,687  INFO - Term-00, Transaction Count = 10

[oracle@cndba.cn run]$

3结论

我们在上节的测试中,基本上每个脚本都修改了。 但最终还是没成功。 从配置上来看,BenchmarkSQL 是为测试Postgresql 数据库准备的,如果是测试pg,基本上代码都不需要修改。 https://www.cndba.cn/dave/article/115

另外,在开头也说过,BenchmarkSQL 是支持ORACLE 数据库的,但通过实验,可以看出,其对象的创建语法并不是按照Oracle 的语法来的。

基于BenchmarkSQL 对Oracle 的不友好,还是放弃使用BenchmarkSQL,可以使用HammerDB 或者 Swingbench来测试Oracle。

测试虽然没有成功,但我们是完整的把测试流程梳理了一遍,如果测试PG,直接参考这个流程测试即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

benchmarksql测试mysql_数据库压力测试工具 -- BenchmarkSQL 使用说明相关推荐

  1. sysbench-系统、数据库压力测试工具

    sysbench是一款简单易用的压力测试工具,可以测试cpu,memory,fileio,mysql数据库; sysbench安装方法: 默认的epel源中的sysbench是0.4版本的,现在已经到 ...

  2. Jmeter 数据库压力测试

    一.jmeter本地数据库压力测试 1.将JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar放到apache-jmeter-3.0\lib\ext目 ...

  3. jmeter并发测试教程_JMeter压力测试并发测试(入门篇)

    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要安 ...

  4. html开发的移动端怎么做压力测试,移动端压力测试

    移动端压力测试 移动端压力测试 一.monkey APP性能测试 (adb shell monkey 1000 adb logcat | gerp START获取包名和activity名 adb sh ...

  5. 什么是压力测试,在哪里做压力测试,软件压力测试存在哪些问题?

    软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.软件压力测试的基本思路很简单: 不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试. 通常要 ...

  6. 10分钟学会数据库压力测试

    01 前言 很多人提到jmeter时,只会说到jmeter进行接口自动化或接口性能测试,其实jmeter还能对数据库进行自动化操作. 个人常用的场景有以下: 对自动化产生的数据,进行删除 不断修改数据 ...

  7. 十大网站压力测试软件 - WEB压力测试工具介绍

    下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能.我相信,北京奥组委的订票网站的开发团队并不知道有这样 ...

  8. ab压力测试_CentOS安装压力测试工具ApacheBench(ab)

    官方文档: https://httpd.apache.org/docs/2.4/programs/ab.html ab原理: ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访 ...

  9. linux 显卡 压力测试软件,显卡压力测试工具 GpuTest

    GpuTest是一个用户界面友好的应用软件,允许用户对显卡GPU进行OpenGL基准压力测试. 测试项目包括了一些我们熟知的方案,如: FurMark压力测试(OpenGL 2.1 or 3.2). ...

最新文章

  1. HarmonyOS 使用DevEcoStudio创建一个xml布局以及引用布局
  2. HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据过程
  3. 输出9*9口诀python-Python输出9*9乘法表的方法
  4. Direct2D (25) : 将画笔线条所占用的区域转换为路径 - ID2D1Geometry.Widen()
  5. 做小程序费用太高?帮你选一个最省钱的方案
  6. Azkaban实战,Command类型单一job示例,任务中执行外部shell脚本,Command类型多job工作flow,HDFS操作任务,MapReduce任务,HIVE任务
  7. 搭建项目前端页面环境
  8. PAT_B_1004_Java(20分)
  9. css居中无效的解决办法
  10. 聊聊全站HTTPS带来的技术挑战
  11. SpringBoot2.0 基础案例(12):基于转账案例,演示事务管理操作
  12. Docker运行tensorflow试试
  13. gradle 编译java配置文件_Andriod(三):配置文件build.gradle与AndroidManifest.xml
  14. 六步搞定RHEL5下的mysql镜像数据库配置
  15. Axure-----三级下拉菜单的具体实现过程
  16. linux内存管理实验,Linux内存管理机制研究
  17. Verilog入门2-用ise做38译码器和仿真
  18. android支付宝运动修改器,一键修改支付宝运动步数-修改支付宝运动步数工具下载不要root手机版-西西软件下载...
  19. 计算机更改为英语,win7如何修改语言 电脑语言改成英文的方法
  20. 项目中 前后台接口 请求项目移植的问题

热门文章

  1. 在线作图丨数据降维方法⑥——消除趋势对应分析(Detrended correspondence analysis, DCA)
  2. PICRUSt2分析实战:16S扩增子OTU或ASV预测宏基因组EC、通路、KO(200806更新)
  3. Linux下取代top的进程管理工具 htop
  4. CNS接连发文背书,原来生姜这么神奇
  5. Nature:拟南芥微生物组功能研究0概述
  6. R语言可视化散点图、气泡图、动态气泡图、数据点重合的散点图、数据点计数图、抖动数据点图、基于lm方法或者loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注
  7. seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side)、添加数值标签进行标记、并自定义条形图数值标签的格式
  8. R语言vtreat包自动处理dataframe的缺失值、计算数据列的均值和方差并基于均值和方差信息对数据列进行标准化缩放、计算所有数据列的均值和方差对所有数据列进行标准化缩放
  9. R语言ggplot2可视化使用ggsave将可视化图像结果保存为SVG文件实战
  10. Error in ** : incorrect number of dimensions