Version 2.1
OLAP引擎
版权
© 20 1 4 用友集团版权所有。
未经用友集团的书面许可,本发版说明任何整体或部分的内容不得被复制、复印、翻译或缩减以用于任何目的。本发版说明的内容在未经通知的情形下可能会发生改变,敬请留意。请注意:本发版说明的内容并不代表用友软件所做的承诺。
目录
1 基准环境
1.1 硬件环境
|
应用服务器(虚拟机) |
数据库服务器(虚拟机) |
IP |
20.10.80.15 |
20.10.80.3 |
操作系统 |
Microsoft Windows 2003 Whistler Server 32-bit (5.2) |
|
CPU |
Intel QEMU Virtual CPU version (cpu64-rhel6) (1995 Mhz, 8 Socket, 1 Cores Per Socket) |
Intel QEMU Virtual CPU version (cpu64-rhel6) (1995 Mhz, 8 Socket, 1 Cores Per Socket) |
内存 |
32G( 其中 JDK 最大内存 1G) |
32G |
硬盘带宽 |
100G |
100G |
网络 |
100Mbps |
100Mbps |
1.2 拓扑结构
1.3 软件环境
操作系统,数据库,中间件, jdk , uap runner 版本等依赖的软件环境
名称 |
值 |
应用服务器操作系统 |
Microsoft Windows 2003 Whistler Server 32-bit (5.2) |
数据库服务器 |
Microsoft Windows 2003 Whistler Server 32-bit (5.2) |
JDK 版本 |
1.6 |
UAPRUNNER 版本 |
2.1.0 |
NMC 版本 |
6.5.0 (在 UAP home 根目录下) |
环境地址 |
htt p://20.10.80.15:80 |
登录用户 |
dev1/ae1234 |
design 数据源信息 |
ae_design/1@20.10.130.235:1521/ORCL |
dw 数据源信息 |
pi _dw_1g/1@20.10.80.3:1521/aepidw |
2 测试场景
2.1 测试数据
TPCH 1G 数据
表名 |
记录数 |
复杂度情况 |
LINEITEM |
6 , 001 , 215 |
复杂 |
CUSTOMER |
150 , 000 |
中等 |
SUPPLIER |
10 , 000 |
中等 |
PART |
200 , 000 |
中等 |
PARTSUPP |
800 , 000 |
中等 |
ORDERS |
1 , 500 , 000 |
复杂 |
REGION |
5 |
简单 |
NATION |
25 |
简单 |
BI_DIM_TIME_21331 |
8 , 308 |
简单 |
2.2 测试模型
分析主题: items
分析主题: orders
分析主题: partsupp
2.3 环境参数
单人执行方案:
每个测试用例执行 100 次,记录用例执行时间和对应的数据库执行时间。
在单独执行和并发执行前,先执行一次查询,保证函数定义等加载到内存中。
并发执行方案:
用户上线策略:整体,每隔 10 秒上线 1 人
用户执行策略:按时间(分钟 / 整体),执行 60 分钟
2.4 基准指标
单人执行方案:
用例执行时间的最大值、最小值、平均值。
对应的数据库执行时间的最大值、最小值、平均值。
并发执行方案:
指标名称 |
说明 |
成功事务总数 |
通过 UAPRUNNER |
失败事务总数 |
通过 UAPRUNNER |
每秒通过事务数 |
通过 UAPRUNNER ,最小值、最大值、平均值 |
事务平均响应时间 |
通过 UAPRUNNER ,最小值、最大值、平均值 |
资源利用率 |
包括 CPU 利用率,内存利用率 |
数据库连接次数最多的远程调用 |
数据库连接数和执行 SQL 数可不对外发布,作为每一版的性能评定标准 |
SQL 数量最多的远程调用 |
|
3 数据
单人环境测试数据:
|
执行时间(s) |
数据库执行时间(s) |
|||||
|
复杂度 |
最小 |
最大 |
平均 |
最小 |
最大 |
平均 |
场景一:查询 |
轻 |
0.97 |
2.51 |
1.65 |
0.705 |
7.017 |
1.775 |
场景二:钻取 |
中 |
1.92 |
2.65 |
2.27 |
1.314 |
7.5 |
1.82 |
场景三:排序 |
中 |
9.84 |
10.96 |
10.44 |
13.657 |
18.593 |
15.013 |
场景四:时序分析(环比) |
中 |
3.39 |
5.20 |
4.54 |
2.361 |
10.5 |
5.781 |
场景四:时序分析(同比) |
中 |
3.31 |
5.63 |
4.34 |
2.406 |
12.608 |
5.608 |
场景五:切换指标 |
中 |
0.85 |
1.46 |
1.11 |
0.732 |
4.873 |
1.123 |
场景六:切换维度 |
中 |
2.56 |
4.46 |
3.87 |
2.705 |
7.483 |
4.131 |
场景七:结构化占比(父级占比) |
中 |
0.94 |
1.62 |
1.23 |
0.782 |
8.952 |
1.137 |
场景八:多个透视区域查询 |
重 |
15.64 |
17.62 |
16.31 |
24.313 |
63.063 |
46.767 |
并发方案测试数据:
1 )资源利用率
2 )每秒通过事务数
3 )事务平均响应时间
4 )事务执行次数
5 ) SQL 数量最多的远程调用 Top10
6 )数据库连接次数最多的远程调用 Top10
4 附录
( 基准测试配置文件的 git 地址,数据文件的备份目录 )
a) 备份文件:
- 应用服务器和数据库服务器的 虚拟机文件 。
- design 数据源的 dump 文件 , dw 数据库的数据通过 tpch 生成。
- 导出的数据仓库元数据、语义模型、分析主题、透视表的定义(通过 design 的 dump 文件可获得)。
- 数据文件备份目录: \\20.2.80.19\olap 性能基准测试文件备份
b) Tpch 数据生成步骤:
- 数据生成过程
1) 在官方网站 (http://www.tpc.org/tpch/spec/tpch_2_17_0.zip) 下载数据生成工具包 tpch_2_17_0.zip
2) 配置 / tpch_2_17_0/dbgen/ 下面的 makefile 文件,需要配置的位置如下 CC= gcc 、 DATABASE= ORACLE 、 MACHINE = LINUX 、 WORKLOAD = TPCH ,参数依照具体的运行环境和需求而定
3) 在 / tpch_2_17_0/dbgen/ 目录下使用 make 指令对数据生成程序进行编译(如果 makefile 有后缀 .suite 需要重命名成无后缀的文件名),编译后会多出一些连接文件
4) 使用 ./dbgen – s 1 进行数据的生成,其中 1 代表生成 1G 的数据量,其中数据量的取值只能取 1, 10, 100, 300, 1000, 3000, 10000, 30000, 100000 其中的一个,执行成功后,在 / tpch_2_17_0/dbgen/ 目录下会有 8 个表的对应的 8 个以 tbl 为后缀的文件
- 建立库表结构 ( 使用如下 sql 创建相关的 8 张表结构 )
CREATE TABLE NATION ( N_NATIONKEY INTEGER NOT NULL,
N_NAME CHAR(25) NOT NULL,
N_REGIONKEY INTEGER NOT NULL,
N_COMMENT VARCHAR(152));
CREATE TABLE REGION ( R_REGIONKEY INTEGER NOT NULL,
R_NAME CHAR(25) NOT NULL,
R_COMMENT VARCHAR(152));
CREATE TABLE PART ( P_PARTKEY INTEGER NOT NULL,
P_NAME VARCHAR(55) NOT NULL,
P_MFGR CHAR(25) NOT NULL,
P_BRAND CHAR(10) NOT NULL,
P_TYPE VARCHAR(25) NOT NULL,
P_SIZE INTEGER NOT NULL,
P_CONTAINER CHAR(10) NOT NULL,
P_RETAILPRICE DECIMAL(15,2) NOT NULL,
P_COMMENT VARCHAR(23) NOT NULL );
CREATE TABLE SUPPLIER ( S_SUPPKEY INTEGER NOT NULL,
S_NAME CHAR(25) NOT NULL,
S_ADDRESS VARCHAR(40) NOT NULL,
S_NATIONKEY INTEGER NOT NULL,
S_PHONE CHAR(15) NOT NULL,
S_ACCTBAL DECIMAL(15,2) NOT NULL,
S_COMMENT VARCHAR(101) NOT NULL);
CREATE TABLE PARTSUPP ( PS_PARTKEY INTEGER NOT NULL,
PS_SUPPKEY INTEGER NOT NULL,
PS_AVAILQTY INTEGER NOT NULL,
PS_SUPPLYCOST DECIMAL(15,2) NOT NULL,
PS_COMMENT VARCHAR(199) NOT NULL );
CREATE TABLE CUSTOMER ( C_CUSTKEY INTEGER NOT NULL,
C_NAME VARCHAR(25) NOT NULL,
C_ADDRESS VARCHAR(40) NOT NULL,
C_NATIONKEY INTEGER NOT NULL,
C_PHONE CHAR(15) NOT NULL,
C_ACCTBAL DECIMAL(15,2) NOT NULL,
C_MKTSEGMENT CHAR(10) NOT NULL,
C_COMMENT VARCHAR(117) NOT NULL);
CREATE TABLE ORDERS ( O_ORDERKEY INTEGER NOT NULL,
O_CUSTKEY INTEGER NOT NULL,
O_ORDERSTATUS CHAR(1) NOT NULL,
O_TOTALPRICE DECIMAL(15,2) NOT NULL,
O_ORDERDATE CHAR(10) NOT NULL,
O_ORDERPRIORITY CHAR(15) NOT NULL,
O_CLERK CHAR(15) NOT NULL,
O_SHIPPRIORITY INTEGER NOT NULL,
O_COMMENT VARCHAR(79) NOT NULL);
CREATE TABLE LINEITEM ( L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_LINENUMBER INTEGER NOT NULL,
L_QUANTITY DECIMAL(15,2) NOT NULL,
L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
L_DISCOUNT DECIMAL(15,2) NOT NULL,
L_TAX DECIMAL(15,2) NOT NULL,
L_RETURNFLAG CHAR(1) NOT NULL,
L_LINESTATUS CHAR(1) NOT NULL,
L_SHIPDATE CHAR(10) NOT NULL,
L_COMMITDATE CHAR(10) NOT NULL,
L_RECEIPTDATE CHAR(10) NOT NULL,
L_SHIPINSTRUCT CHAR(25) NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL);
- 导入数据
1) 使用 sqlldr name / password @ ip : port / service control= /catalog1 /loa d_control .ctl 进行表的数据导入过程,其中需要控制文件对数据的导入进行控制,控制文件的样例如下
load data
infile '/catalog2/customer.tbl'
append into table CUSTOMER
fields terminated by '|'
( C_CUSTKEY ,
C_NAME ,
C_ADDRESS ,
C_NATIONKEY ,
C_PHONE ,
C_ACCTBAL ,
C_MKTSEGMENT ,
C_COMMENT)
- 建立主键、外键、索引
1) 建立主键
ALTER TABLE PART ADD PRIMARY KEY (P_PARTKEY);
ALTER TABLE SUPPLIER ADD PRIMARY KEY (S_SUPPKEY);
ALTER TABLE PARTSUPP ADD PRIMARY KEY (PS_PARTKEY, PS_SUPPKEY);
ALTER TABLE CUSTOMER ADD PRIMARY KEY (C_CUSTKEY);
ALTER TABLE ORDERS ADD PRIMARY KEY (O_ORDERKEY);
ALTER TABLE LINEITEM ADD PRIMARY KEY (L_ORDERKEY, L_LINENUMBER);
ALTER TABLE NATION ADD PRIMARY KEY (N_NATIONKEY);
ALTER TABLE REGION ADD PRIMARY KEY (R_REGIONKEY);
2) 建立外键
ALTER TABLE SUPPLIER ADD CONSTRAINT FK_SUPPLIER_1 FOREIGN KEY (S_NATIONKEY) REFERENCES NATION(N_NATIONKEY);
ALTER TABLE PARTSUPP ADD CONSTRAINT FK_PARTSUPP_1 FOREIGN KEY (PS_PARTKEY) REFERENCES PART(P_PARTKEY);
ALTER TABLE PARTSUPP ADD CONSTRAINT FK_PARTSUPP_2 FOREIGN KEY (PS_SUPPKEY) REFERENCES SUPPLIER(S_SUPPKEY);
ALTER TABLE CUSTOMER ADD CONSTRAINT FK_CUSTOMER_1 FOREIGN KEY (C_NATIONKEY) REFERENCES NATION(N_NATIONKEY);
ALTER TABLE ORDERS ADD CONSTRAINT FK_ORDERS_1 FOREIGN KEY (O_CUSTKEY) REFERENCES CUSTOMER(C_CUSTKEY);
ALTER TABLE LINEITEM ADD CONSTRAINT FK_LINEITEM_1 FOREIGN KEY (L_ORDERKEY) REFERENCES ORDERS(O_ORDERKEY);
ALTER TABLE LINEITEM ADD CONSTRAINT FK_LINEITEM_2 FOREIGN KEY (L_PARTKEY,L_SUPPKEY) REFERENCES PARTSUPP(PS_PARTKEY,PS_SUPPKEY);
ALTER TABLE NATION ADD CONSTRAINT FK_NATION_1 FOREIGN KEY (N_REGIONKEY) REFERENCES REGION(R_REGIONKEY);
3) 建立索引
CREATE INDEX IDX_SUPPLIER_NATION_KEY ON SUPPLIER (S_NATIONKEY);
CREATE INDEX IDX_PARTSUPP_PARTKEY ON PARTSUPP (PS_PARTKEY);
CREATE INDEX IDX_PARTSUPP_SUPPKEY ON PARTSUPP (PS_SUPPKEY);
CREATE INDEX IDX_CUSTOMER_NATIONKEY ON CUSTOMER (C_NATIONKEY);
CREATE INDEX IDX_ORDERS_CUSTKEY ON ORDERS (O_CUSTKEY);
CREATE INDEX IDX_LINEITEM_ORDERKEY ON LINEITEM (L_ORDERKEY);
CREATE INDEX IDX_LINEITEM_PART_SUPP ON LINEITEM (L_PARTKEY,L_SUPPKEY);
CREATE INDEX IDX_NATION_REGIONKEY ON NATION (N_REGIONKEY);
-- aditional indexes
CREATE INDEX IDX_LINEITEM_SHIPDATE ON LINEITEM (L_SHIPDATE, L_DISCOUNT, L_QUANTITY);
CREATE INDEX IDX_ORDERS_ORDERDATE ON ORDERS (O_ORDERDATE);
Attachments:
UAP数据平台性能基准测试报告-OLAP引擎_forupload.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
UAP数据平台性能基准测试报告-OLAP引擎_forupload.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
UAP数据平台性能基准测试报告-OLAP引擎_forupload.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
UAP数据平台性能基准测试报告-OLAP引擎_forupload.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)