千家信息网

BMSQL 5.0测试国产数据库TPCC使用方法

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,以前也使用过Benchmarksql4.0做个测试,国庆用 Benchmarksql5.0也试了一下,BM5.0 和4.1 不同的地方在于他设置了数据库类型。如果没有对应的数据库类型就会报不支持索引需
千家信息网最后更新 2026年11月01日BMSQL 5.0测试国产数据库TPCC使用方法

以前也使用过Benchmarksql4.0做个测试,国庆用 Benchmarksql5.0也试了一下,BM5.0 和4.1 不同的地方在于他设置了数据库类型。如果没有对应的数据库类型就会报不支持索引需要修改java 包和SH 脚本增加一个DM 的类型


一、 准备环境

1. 已经启动的一个DM 数据库

2. JAVA 1.7 以上的环境

3. 下载解压BMSQL5.0

4. 将DMJDBC-1.8 放到bmsqsl 的lib 下

二、BMSQL 脚本新修改

1. 复制一个props.ora 该名为props.dm 并修改内容

# cp props.ora props.dm

# vi props.dm

db=dm

driver=dm.jdbc.driver.DmDriver

conn=jdbc:dm://LOCALHOST:5236

user=BMSQL

password=123456789

2. 进入/opt/benchmarksql-5.0/run/sql.common 修改tableCreate.sql

create table benchmarksql.bmsql_config (

cfg_name varchar(30) primary key,

cfg_value varchar(50)

);

create table benchmarksql.bmsql_warehouse (

w_id int not null,

w_ytd float,

w_tax float,

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),

cluster primary key(w_id)

)storage(fillfactor 2,without counter);

create table benchmarksql.bmsql_district (

d_w_id int not null,

d_id int not null,

d_ytd float,

d_tax float,

d_next_o_id int,

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),

cluster primary key(d_w_id,d_id)

)storage(fillfactor 2,without counter);

create table benchmarksql.bmsql_customer (

c_w_id int not null,

c_d_id int not null,

c_id int not null,

c_discount float,

c_credit char(2),

c_last varchar(16),

c_first varchar(16),

c_credit_lim float,

c_balance float,

c_ytd_payment float,

c_payment_cnt int,

c_delivery_cnt int,

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),

cluster primary key(c_w_id,c_d_id,c_id)

);

create sequence benchmarksql.bmsql_hist_id_seq;

create table benchmarksql.bmsql_history (

hist_id int default benchmarksql.bmsql_hist_id_seq.NEXTVAL,

h_c_id int,

h_c_d_id int,

h_c_w_id int,

h_d_id int,

h_w_id int,

h_date timestamp,

h_amount float,

h_data varchar(24)

)storage(branch(32,32),without counter);

create table benchmarksql.bmsql_oorder (

o_w_id int not null,

o_d_id int not null,

o_id int not null,

o_c_id int,

o_carrier_id int,

o_ol_cnt float,

o_all_local float,

o_entry_d timestamp,

cluster primary key(o_w_id,o_d_id,o_id)

);

create table benchmarksql.bmsql_new_order (

no_w_id int not null,

no_d_id int not null,

no_o_id int not null,

cluster primary key(no_w_id,no_d_id,no_o_id)

);

create table benchmarksql.bmsql_order_line (

ol_w_id int not null,

ol_d_id int not null,

ol_o_id int not null,

ol_number int not null,

ol_i_id int not null,

ol_delivery_d timestamp,

ol_amount float,

ol_supply_w_id int,

ol_quantity float,

ol_dist_info char(24),

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

);

create table benchmarksql.bmsql_stock (

s_w_id int not null,

s_i_id int not null,

s_quantity float,

s_ytd float,

s_order_cnt int,

s_remote_cnt int,

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),

cluster primary key(s_i_id,s_w_id)

);

create table benchmarksql.bmsql_item (

i_id int not null,

i_name varchar(24),

i_price float,

i_data varchar(50),

i_im_id int,

cluster primary key(i_id)

);

注1 :DECIMAL 类型都改为FLOAT 类型

注2 :去掉外键

注3 :主键强制聚集

修改indexCreate.sql 脚本

create index ndx_customer_name

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

目前只需要这一个索引

三、 修改JAVA 包和sh 脚本添加DM7

# cd /opt/benchmarksql-5.0/src/client/jTPCC.java

# vi jTPCC.java

if (iDB.equals("firebird"))

dbType = DB_FIREBIRD;

else if (iDB.equals("oracle"))

dbType = DB_ORACLE;

else if (iDB.equals("postgres"))

dbType = DB_POSTGRES;

else if (iDB.equals("dm7"))

dbType = DB_DM;

else

{

log.error("unknown database type '" + iDB + "'");

return;

}

if(Integer.parseInt(limPerMin) !=0){

limPerMin_Terminal = Integer.parseInt(limPerMin)/Integer.parseInt(iTerminals);

}

else{

limPerMin_Terminal = -1;

}

标红处为手动添加的数据库类型

#cd /opt/benchmarksql-5.0/run

#vi funcs.sh

function setCP()

{

case "$(getProp db)" in

firebird)

cp="../lib/firebird/*:../lib/*"

;;

oracle)

cp="../lib/oracle/*"

if [ ! -z "${ORACLE_HOME}" -a -d ${ORACLE_HOME}/lib ] ; then

cp="${cp}:${ORACLE_HOME}/lib/*"

fi

cp="${cp}:../lib/*"

;;

postgres)

cp="../lib/postgres/*:../lib/*"

;;

dm7)

cp="../lib/dm7/*:../lib/*"

;;

esac

myCP=".:${cp}:../dist/*"

export myCP

}

省略。。。。。。。。。。。

case "$(getProp db)" in

firebird|oracle|postgres| dm7)

;;

"") echo "ERROR: missing db= config option in ${PROPS}" >&2

exit 1

;;

*) echo "ERROR: unsupported database type 'db=$(getProp db)' in ${PROPS}" >&2

exit 1

;;

esac

标红处为添加部分

四、 执行数据创建和装载

1. 创建表和索引

#./runSql props.dm sql.common/tableCreate.sql

#./runSql props.dm sql.common/indexCreate.sql

2. 装载数据

#./runLoader.sh props.dm warehourse 1

五、 运行TPC-C

./runBenchmark.sh props.dm

执行结束

数据 类型 数据库 脚本 索引 环境 装载 测试 不同 内容 国庆 地方 手动 部分 会报 准备 强制 支持 运行 使用方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 广州大一互联网络科技有限公司 湖南永感互联网科技有限公司 朗新科技与工业互联网 没上市的科技互联网公司 互联网科技开发公司 互联网科技集团 互联网科技咨询 四个字互联网科技公司取名 上海电发互联网科技有限公司 天速互联网络科技有限公司 互联网企业科技类企业如何做账 智帮互联网科技公司最近动向 江苏苏星互联网科技有限公司 济南小医互联网科技有限公司招聘 互联网科技手机排行榜 易租星互联网科技有限公司 众联互联网络科技 盐城市攀科互联网科技有限公司 互联网大会出现的黑科技 哈尔滨大商圈互联网科技有限公司 互联网 科技创新 合肥互联网科技公司 碳银互联网科技 博兴的互联网电子科技公司 承德科技产业互联网发展 江阴互联网智能科技产品进口 互联网科技产业特征 求路客互联网科技电话 10位科技互联网大佬
0