https://eco.dameng.com/community/post/20220513165845Y2127MA8W2LDNV2NTZ
本文主要分享国产数据库达梦数据库的部署、BenchmarkSQL 和 sysbench 性能测试以及在可计算存储 CSD 上的性能表现。部署过程比较细节篇幅较长,可以直接跳到尾部看总结。由于使用不多,可能有些理解不当,欢迎交流指出。
官网下载地址:https://www.dameng.com/list_103.html
官网文档地址:https://eco.dameng.com/docs/zh-cn/pm/index.html?source_url=https://www.dameng.com/list_103.html
达梦数据库支持多种 CPU 架构和操作系统,这里我选择 x86 和 CentOS7 系统,下载软件并解压缩。
[dmdba@sfx111188 soft]$ wget https://package.dameng.com/eco/adapter/dm/dm8/dm8_20210712_x86_rh6_64_ent.zip
[dmdba@sfx111188 soft]$ ls -lrth dm8_20210712_x86_rh6_64_ent.zip
-rw-r--r-- 1 root root 716M Mar 18 15:50dm8_20210712_x86_rh6_64_ent.zip
unzip dm8_20210712_x86_rh6_64_ent.zip
[dmdba@sfx111188 soft]$ cd dm8_20210712_x86_rh6_64_ent && ls-lrth
total 727M
-rw-r--r-- 1 root root 727M Aug 12 2021 dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso
-rw-r--r-- 1 root root 169Aug 12 2021dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso_SHA256.txt
复制
安装文件是iso 文件,可以挂载到本地目录
[dmdba@sfx11118 dm8_20210712_x86_rh6_64_ent]$
mkdir -p /disk
mount -o loop dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso /disk
df -h |grep disk
/dev/loop0 727M 727M 0 100% /disk
复制
安装之前简单规划一下。
内存:主机内存128G,数据库BUFFER POOL 给60G 。数据库还会有些其他内存需求,以及主机后面要跑测试程序也需要一些内存。
磁盘:安装目录都放在NVME 接口的SSD盘上,这里选择的是ScaleFlux 的CSD 2000 。路径 /data/
用户:达梦数据库默认会安装在用户 dmdba 下,如果用户不存在会自动创建(用户组为dinstall);如果用户存在,就会修改这个用户组设置。
安装目录:/opt/dmdbms
相关软件:安装文档里提到的必装软件,这里都安装了,就略过不提。
初次安装一个数据库,不一定能一次性成功,免不了要反复尝试。再次尝试的时候用官方的卸载方法可以保证卸载干净。
[dmdba@sfx111188 dmdbms]$ ./uninstall.sh -i
复制
进入安装镜像文件目录,里面有安装文件和文档。非常简单。
[root@sfx111188 disk]# cd /disk
[root@sfx111188 disk]# ls -lrth
total 727M
-r-xr-xr-x 1 root root 2.7M Jul 11 2021 DM8 Install.pdf
-r-xr-xr-x 1 root root 724M Jul 11 2021 DMInstall.bin
[root@sfx111188 disk]#
复制
安装会有多种模式,这里选择不要 key、自定义安装。
安装命令就是 DMInstall.bin -i 即可。
[root@sfx111188 disk]# ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:e
Extract install files..........
Welcome to DM DBMS Installer
Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:n
Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:4
1 Server component
2 Client component
2.1 Manager
2.2 Monitor
2.3 DTS
2.4 Console
2.5 Analyzer
2.6 DISQL
3 DM Drivers
4 Manual component
5 DBMS Service
5.1 Realtime Audit Service
5.2 Job Service
5.3 Instance MonitorService
5.4 Assistant Plug-InService
Please Input the number of the Installation Type [1 2 3 4 5]:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Require Space: 1181M
Please Input the install path [/opt/dmdbms]:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Available Space:11G
Please Confirm the install path(/opt/dmdbms)? (Y/y:Yes N/n:No)[Y/y]:y
Pre-Installation Summary
Installation Location: /opt/dmdbms
Require Space: 1181M
Available Space: 11G
Version Information:
Expire Date:
Installation Type: Custom
Confirm to Install? (Y/y:Yes N/n:No):y
File /etc/dm_svc.conf exist, replace it? (Y/y,N/n) [Y/y]:y
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
2022-03-19 10:56:18
[INFO] Installing DM DBMS...
2022-03-19 10:56:18
[INFO] Installing BASE Module...
2022-03-19 10:56:20
[INFO] Installing SERVER Module...
2022-03-19 10:56:20
[INFO] Installing CLIENT Module...
2022-03-19 10:56:21
[INFO] Installing DRIVERS Module...
2022-03-19 10:56:21
[INFO] Installing MANUAL Module...
2022-03-19 10:56:21
[INFO] Installing SERVICE Module...
2022-03-19 10:56:22
[INFO] Move log file to log directory.
2022-03-19 10:56:22
[INFO] Change the power of installtion directory successfully.
2022-03-19 10:56:23
[INFO] Installed DM DBMS completely.
End
复制
注意,这一步只是安装软件。
达梦数据库的可执行文件在安装目录的 bin 目录下。可以将这个目录加入到用户 dmdba PATH环境变量里。
初始化数据库目录。
使用命令 dminit 初始化数据库目录。具体请使用帮助参考文档:https://eco.dameng.com/docs/zh-cn/pm/use-dminit.html 。
初始化时指定数据库页大小为32KB。这个相比 ORACLE 8K 页大小而言比较大。初始化时指定数据库的顶层目录。这里放在 CSD 盘上。
[dmdba@sfx111188 dmdbms]$ bin/dminit path=/data page_size=32 extent_size=32
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-07-09
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of RO
log file path:/data/DAMENG/DAMENG01.log
log file path:/data/DAMENG/DAMENG02.log
write to dir [/data/DAMENG].
create dm database success. 2022-03-19 11:04:54
复制
查看初始化后的目录。
[dmdba@sfx111188 dmdbms]$ tree /data/DAMENG/
/data/DAMENG/
|-- DAMENG01.log
|-- DAMENG02.log
|-- HMAIN
|-- MAIN.DBF
|-- ROLL.DBF
|-- SYSTEM.DBF
|-- bak
|-- ctl_bak
| `--dm_20220319110454_073687.ctl
|-- dm.ctl
|-- dm.ini
|-- dm_service.prikey
|-- dminit20220319110451.log
`-- sqllog.ini
3 directories, 11 files
复制
修改数据库配置文件
达梦数据库配置文件 dm.ini 在数据库初始化目录里。严格来说要将下面参数一一修改。这里用了简单的方法,把要修改的参数放在文件末尾。
[dmdba@sfx111188 dmdbms]$ vim /data/DAMENG/dm.ini +$
ADAPTIVE_NPLN_FLAG=0
BDTA_SIZE=16
BTR_SPLIT_MODE=1
BUFFER=60000
BUFFER_POOLS=100
CACHE_POOL_SIZE=1000
CASE_WHEN_CVT_IFUN=5
CKPT_DIRTY_PAGES=0
CKPT_INTERVAL=60
CKPT_RLOG_SIZE=0
CLOB_LIKE_MAX_LEN=31
COMM_VALIDATE=0
CONCURRENT_DELAY=12
DECIMAL_FIX_STORAGE=1
DICT_BUF_SIZE=1000
ENABLE_FREQROOTS=1
ENABLE_HASH_JOIN=0
ENABLE_HUGE_SECIND=0
ENABLE_IN_VALUE_LIST_OPT=1
ENABLE_MONITOR=0
ENABLE_SPACELIMIT_CHECK=0
FAST_POOL_PAGES=99999
FAST_RELEASE_SLOCK=0
FAST_ROLL_PAGES=3000
FAST_RW_LOCK=2
FIRST_ROWS=16
FORCE_FLUSH_PAGES=0
GROUP_OPT_FLAG=0
HAGR_DISTINCT_OPT_FLAG=0
HASH_PLL_OPT_FLAG=2
HUGE_BUFFER=8
IO_THR_GROUPS=64
LIKE_OPT_FLAG=7
LOG_BUF_SIZE=512
LOG_POOL_SIZE=128
MAX_BUFFER=150000
#MAX_CONCURRENT_TRX=180
MAX_CONCURRENT_TRX=0
MAX_SESSIONS=10000
MAX_SESSION_STATEMENT=10000
MEMORY_MAGIC_CHECK=0
MEMORY_POOL=500
MPP_UPD_DEL_OPT=1
NOWAIT_WHEN_UNIQUE_CONFLICT=1
PARALLEL_PURGE_FLAG=1
PSEG_RECV=1
PURGE_DEL_OPT=2
PURGE_WAIT_TIME=0
RECYCLE=8
RECYCLE_POOLS=1
RLOG_BUF_SIZE=512
RLOG_PARALLEL_ENABLE=1
RLOG_POOL_SIZE=128
SESS_CHECK_INTERVAL=30
SESS_POOL_SIZE=1024
TRX_VIEW_MODE=1
TRX_VIEW_SIZE=512
UNDO_EXTENT_NUM=32
UNDO_RETENTION=0.200000
UPD_DEL_OPT=1
VIEW_FILTER_MERGING=2
VM_MEM_HEAP=1
VM_POOL_SIZE=512
WORKER_THREADS=64
WORK_THRD_STACK_SIZE=1024
ENABLE_MONITOR_BP=0
TEMP_SIZE=1024
MVCC_RETRY_TIMES=10
复制
上面参数有个要注意:
BUFFERS 是指定数据库内存的主要部分的大小,这里设置为60000(单位MB)。
MAX_SESSIONS 是指定最大会话数,默认值太小(100),这里设置为10000。设置过小会导致后面高并发压测时出现数据库连接失败。
数据库初始化后,在root下注册一下数据库服务。
[root@sfx111188 ~]# /opt/dmdbms/script/root/dm_service_installer.sh-t dmserver -dm_ini /data/DAMENG/dm.ini -p DMSERVER
[dmdba@sfx111188 dmdbms]$ ls bin/DmServiceDMSERVER3
bin/DmServiceDMSERVER3
[dmdba@sfx111188 dmdbms]$ bin/DmServiceDMSERVER3 start
Starting DmServiceDMSERVER3: [ OK ]
复制
如果不注册服务,就在 dmdba下手动启动数据库服务也行。
cd /opt/dmdbms
nohup bin/dmserver /data/DAMENG/dm.ini 2>&1 1>dmdbms.log&
复制
推荐注册数据库服务。单机安装多个达梦数据库实例时,可以注册多个不重名的数据库服务,方便管理。
运行一段时间后,数据库服务器启动成功,监听端口5236 。
[dmdba@sfx111188 dmdbms]$ netstat -ntlp |grep dmserver
(Not all processes could be identified, non-owned process info
will not be shown, you wouldhave to be root to see it all.)
tcp6 0 0 :::5236 :::* LISTEN 69818/bin/dmserver
复制
AWR 报表是数据库性能指标的一个快照,对分析过去某个时间段内的性能变化非常有帮助。
达梦实例连接命令使 disql,默认管理员用户和密码如下。下面初始化报表默认对象,配置采集间隔,以及演示手动采集性能快照和生成报表方法。
[dmdba@sfx111188 dmdbms]$ bin/disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 1.072(ms)
disql V8
SQL> SP_INIT_AWR_SYS(1);
SP_INIT_AWR_SYS(1);
[-3401]:tablespace [SYSAUX] is already exist
-3401: anonymous block line 16 .
used time: 13.802(ms). Execute id is 0.
SQL> DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(30);
DMSQL executed successfully
used time: 27.980(ms). Execute id is 310363315.
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL executed successfully
used time: 00:00:02.483. Execute id is 310363316.
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL executed successfully
used time: 844.433(ms). Execute id is 310363317.
SQL> SELECT * FROM SYS.WRM$_SNAPSHOT;
LINEID SNAP_ID DBID INSTANCE_NUMBER STARTUP_TIME BEGIN_INTERVAL_TIMEEND_INTERVAL_TIME SNAP_LEVEL
---------- ----------- ----------- ----------------------------------------- ------------------- -------------------------------------
1 1 NULL 1 2022-03-21 11:13:35.000000NULL 2022-03-2112:00:40.000000 1
2 2 NULL 1 2022-03-21 11:13:35.000000 NULL 2022-03-21 12:00:49.000000 1
SQL>CALL SYS.AWR_REPORT_HTML(1,2,'/tmp','awr1.html');
DMSQL executed successfully
used time: 170.755(ms). Execute id is 1403.
SQL>
复制
TPC-C是衡量联机事务处理(OLTP,OnlineTransaction Processing)系统的工业标准,是行业中公认的权威和最为复杂的在线事务处理基准测试。它通过模拟仓库和订单管理系统,测试广泛的数据库功能,包括查询、更新和 mini-batch事务(队列式小批量事务)。
TPC-C 的测试方法就是指定业务仓库表的数据量。其他表的数据规模都是基于仓库表按比例扩张,彼此有业务逻辑。测试结果也就一个输出:tpmC ,每分钟创建订单数。配置文件里有各种业务场景的比例,这个通常保持不变。
TPC-C 的优点是有业务场景,比较接近客户交易场景业务。测试执行也简单(变量少)。缺点是理解稍微有点难度。
根据官方文档介绍的测试环境,本文中涉及的TPC-C测试将使用 BenchmarkSQL5.0 软件实现。BenchmarkSQL是一款基于JDBC实现的类似于OLTP的TPC-C标准测试工具,目前支持的数据库如:PostgreSQL、Oracle等。
BenchmarkSQL 可以从github里搜索下载。
需要修改文件 jTPCC.java 增加数据库类型 dameng
vim src/client/jTPCC.java
117 if(iDB.equals("firebird"))
118 dbType =DB_FIREBIRD;
119 else if(iDB.equals("oracle"))
120 dbType =DB_ORACLE;
121 else if(iDB.equals("postgres"))
122 dbType =DB_POSTGRES;
123 else if(iDB.equals("dameng"))
124 dbType =DB_UNKNOWN;
125 else
126 {
127 log.error("unknown database type '" + iDB + "'");
128 return;
129 }
复制
使用ant 编译。
[root@sfx111188 benchmarksql-5.0]# ant
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Buildfile: /root/benchmarksql-5.0/build.xml
init:
compile:
[javac] Compiling 11source files to /root/benchmarksql-5.0/build
dist:
[jar] Building jar:/root/benchmarksql-5.0/dist/BenchmarkSQL-5.0.jar
BUILD SUCCESSFUL
Total time: 0 seconds
复制
修改 run/funcs.sh,增加 dameng 数据库类型的驱动类文件目录。
25 function setCP()
26 {
27 case "$(getProp db)" in
28 firebird)
29 cp="../lib/firebird/*:../lib/*"
30 ;;
31 oracle)
32 cp="../lib/oracle/*"
33 if [ ! -z "${ORACLE_HOME}"-a -d ${ORACLE_HOME}/lib ] ; then
34 cp="${cp}:${ORACLE_HOME}/lib/*"
35 fi
36 cp="${cp}:../lib/*"
37 ;;
38 postgres)
39 cp="../lib/postgres/*:../lib/*"
40 ;;
41 dameng)
42 cp="../lib/dm/*:../lib/*"
43 ;;
44 esac
45 myCP=".:${cp}:../dist/*"
46 export myCP
47 }
复制
配置达梦数据库连接
BenchmarkSQL 是JAVA 开发的,连接达梦数据库必须使用达梦8的JDBC驱动。驱动文件在安装目录的drivers 目录下。
mkdir ~/benchmarksql-5.0/lib/dm/
cp /opt/dmdbms/drivers/jdbc/DmJdbcDriver18.jar~/benchmarksql-5.0/lib/dm/
复制
达梦数据库连接配置文件。
[root@sfx111188 run]# pwd
/root/benchmarksql-5.0/run
[root@sfx111188 run]# vim props.dm
db=dameng
driver=dm.jdbc.driver.DmDriver
conn=jdbc:dm://sfx111188:5236
user=tpcc
password=123456789
warehouses=10000
loadWorkers=25
terminals=100
复制
配置文件指定 TPC-C 仓库数为 10000 仓。
连接达梦数据库
[dmdba@sfx111188 dmdbms]$ disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 1.286(ms)
disql V8
SQL>
复制
给表空间文件单独一个目录,方便管理。
[dmdba@sfx111188 DAMENG]$ mkdir /data/DAMENG/tpcc
复制
连接数据库,建表空间。表空间文件默认有自动扩展属性,为了最大化 IO 性能,这里还是手动创建多个数据文件。
CREATE TABLESPACE BENCHMARKSQL DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL1.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL2.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL3.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL4.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL5.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL6.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL7.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL8.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL9.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL10.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL11.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL12.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL13.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL14.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL15.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL16.dbf' SIZE 100000;
ALTER TABLESPACE BENCHMARKSQL ADD DATAFILE '/data/DAMENG/tpcc/BENCHMARKSQL17.dbf' SIZE 100000;
复制
表空间数据文件初始化为指定大小,实际在CSD 2000 内部并不分配存储。可以通过命令确认。
[root@sfx111188 ~]# sfx-filesize -h /data/DAMENG/tpcc/*.dbf |grep .
Logical Alocated Physical Ratio File
97.66G 97.66G 2.80K 36612290.50 /data/DAMENG/tpcc/BENCHMARKSQL1.dbf
Logical Alocated Physical Ratio File
97.66G 97.66G 1.62K 63015384.62 /data/DAMENG/tpcc/BENCHMARKSQL10.dbf
<……>
Logical Alocated Physical Ratio File
97.66G 97.66G 1.62K 63015384.62 /data/DAMENG/tpcc/BENCHMARKSQL9.dbf
复制
备注:命令 sfx-filesize 是 CSD 2000 提供的命令,用于查看文件在 CSD 内部实际分配空间以及当前 CSD 压缩比(公式:文件系统里的逻辑大小 / CSD 内部实际物理大小)。
DROP USER TPCC CASCADE;
CREATE USER TPCC IDENTIFIED BY "123456789";
GRANT DBA TO TPCC;
ALTER USER TPCC DEFAULT TABLESPACE BENCHMARKSQL;
复制
测试用户连接。
[dmdba@sfx111188 dmdbms]$ disql tpcc/123456789
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 1.183(ms)
disql V8
SQL>
复制
建表
建表语句,大部分表采用分区表,使用 hash 分区,并且指定表的 FILLFACTOR(填充因子)为50。
[root@sfx111188 run]# mkdir sql.dameng
vim dameng/create_tables.sql
create table TPCC.bmsql_config (
cfg_name varchar(30) cluster primarykey,
cfg_value varchar(50)
);
create table TPCC.BMSQL_WAREHOUSE (
w_id integer notnull,
w_ytd decimal(12,2),
w_tax decimal(12,2),
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)
)
PARTITION BY hash(w_id) partitions 100
storage(FILLFACTOR 50 );
create table TPCC.bmsql_district (
d_w_id integer notnull,
d_id integer notnull,
d_ytd decimal(12,2),
d_tax decimal(12,2),
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),
cluster primary key(d_w_id, d_id))
PARTITION BY hash(d_w_id) partitions 100
storage(FILLFACTOR 50 );
create table TPCC.bmsql_customer (
c_w_id integer notnull,
c_d_id integer notnull,
c_id integer notnull,
c_discount decimal(12,2),
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 decimal(12,2),
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),
cluster primary key(c_w_id,c_d_id, c_id))
PARTITION BY hash(c_w_id) partitions 100
storage(FILLFACTOR 50 );
create table TPCC.bmsql_history (
hist_id integer,
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(12,2),
h_data varchar(24)
)
PARTITION BY hash(h_c_w_id) partitions 100
storage(FILLFACTOR 50);
create table TPCC.bmsql_oorder (
o_w_id integer notnull,
o_d_id integer notnull,
o_id integer notnull,
o_c_id integer,
o_carrier_id integer,
o_ol_cnt decimal(12,2),
o_all_local decimal(12,2),
o_entry_d timestamp,
cluster primary key(o_w_id,o_d_id, o_id)
)
PARTITION BY hash(o_w_id) partitions 100
storage(FILLFACTOR 50);
create table TPCC.bmsql_new_order (
no_w_id integer notnull,
no_d_id integer notnull,
no_o_id integer notnull,
cluster primary key(no_w_id,no_d_id, no_o_id)
)
PARTITION BY hash(no_w_id) partitions 100
storage(FILLFACTOR 50);
create table TPCC.bmsql_order_line (
ol_w_id integer notnull,
ol_d_id integer notnull,
ol_o_id integer notnull,
ol_number integer notnull,
ol_i_id integer notnull,
ol_delivery_d timestamp,
ol_amount decimal(12,2),
ol_supply_w_id integer,
ol_quantity decimal(12,2),
ol_dist_info char(24),
cluster primary key(ol_w_id,ol_d_id, ol_o_id, ol_number)
)
PARTITION BY hash(ol_w_id) partitions 100
storage(FILLFACTOR 50);
create table TPCC.bmsql_stock (
s_w_id integer notnull,
s_i_id integer notnull,
s_quantity decimal(12,2),
s_ytd decimal(12,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),
cluster primary key(s_w_id,s_i_id)
)
PARTITION BY hash(s_w_id) partitions 100
storage(FILLFACTOR 50);
create table TPCC.bmsql_item (
i_id