Phoenix on HBase性能测试报告
目的
软件版本
硬件环境
测试工具
测试说明
o素材
场景
o数据写入
oK-V(RowKey)查询
o即席查询
o并发查询
结果与分析
o数据写入
oK-V(RowKey)查询
o即席查询
o并发查询
结论
测试中发现的“特点”
目的
测试phoenix引擎在hbase上的数据查询与数据写入的性能,探索phoenix的特性和限制
软件版本
phoenix-4.8.0-HBase-1.1
HBase-1.1.6
硬件环境
四台配置相同的PC机搭建HBase集环境,其中一台做HMaster,另外三台做Region
部件
规格
CPU
Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz  1U * 4Core
MEM
64G
测试工具
squirrel-sql-3.5.3
apache-jmeter-3.0
测试说明
使用基于jdbc连接的squirrel-sql-3.5.3进行单用户下的sql性能测试
使用基于jdbc连接的apache-jmeter-3.0进行多线程并发测试
素材
Reinfo表(测点基础信息表)
列名
类型
注释
是否主键
Data_id
bigint
测点ID
PKhbase的特性有哪些
DataName
varchar(300)
测点名
 
DataType
varchar(100)
测点的数据类型
(电压、电流、有功、无功等)
 
byzid
varchar(300)
变电站编号
 
orgid
varchar(300)
组织机构编号
 
应用场景:仅用于存放测点的档案信息,用于查询范围的条件检索过滤时使用
测试数据规模:5千
CurrData表(当日数据表)
列名
类型
注释
是否主键
Data_id
bigint
测点ID
PK
date_time
DATE
时点
(2016-09-19 00:00,2016-09-19 00:01 ... 2016-09-19 23:59)
PK
data
float
测试值
 
name
varchar(300)
测点名(根据reinfo冗余字段)
 
DataType
varchar(100)
测点的数据类型
(电压、电流、有功、无功等)(根据reinfo冗余字段)
 
byzid
varchar(300)
变电站编号(根据reinfo冗余字段)
 
orgid
varchar(300)
组织机构编号(根据reinfo冗余字段)
 
应用场景:按测点编号进行查询,每次通常查询1个测点的数据,但有时也会查询几个测点的数据
测试数据规模:7百万
HisData(历史数据表)
列名
类型
注释
是否主键
Data_id
bigint
测点ID
PK
date_time
DATE
时点
(2016-09-19 00:00,2016-09-19 00:01 ... 2016-09-19 23:59)
PK
data
float
测试值
 
name
varchar(300)
测点名(根据reinfo冗余字段)
 
DataType
varchar(100)
测点的数据类型
(电压、电流、有功、无功等)(根据reinfo冗余字段)
 
byzid
varchar(300)
变电站编号(根据reinfo冗余字段)
 
orgid
varchar(300)
组织机构编号(根据reinfo冗余字段)
 
应用场景:按测点编号进行查询,每次通常查询1个测点的数据,但有时也会查询几个测点的数据
测试数据规模:5千万
场景
数据写入
评估数据写入的性能,分别对数据导入和数据插入两种方式评测。
数据导入:将文本文件数据装载至目标表。
数据插入:使用dml插入数据至目标表。
评估并发写的效率
CASE 1:数据导入
##命令示例
./psql.py hostname-2 -t CURRDATA /home/currdata1.csv
CASE 2:数据插入
/*语句示例*/
upsert into currdata select * from currdata1;
/*currdata1与currdata结构一致*/
 
K-V(RowKey)查询
根据表的主键(PK)进行K-V查询,场景主要有:单测点单日,单测点多日,多测点单日,多测点多日
CASE 1:单测点单日
/*sql示例*/
select data_id,date_time,data from hisdata where data_id=104708704221266921 and date_time<=TO_DATE('2016-09-20', 'yyyy-MM-dd') and date_time>=TO_DATE('2016-09-20', 'yyyy-MM-dd') order by date_time;
CASE 2:单测点多日
/*sql示例*/
select data_id,date_time,data from hisdata where data_id=104708704221266921 and date_time<=TO_DATE('2016-09-20', 'yyyy-MM-dd') and date_time>=TO_DATE('2016-09-18', 'yyyy-MM-dd') order by data_id,date_time;
CASE 3:多测点单日
/*sql示例*/
select data_id,date_time,data from hisdata where data_id>=104708704221266921 and data_id <=104708704221266931 and date_time<=TO_DATE('2016-09-17', 'yyyy-MM-dd') and date_time>=TO_DATE('2016-09-17', 'yyyy-MM-dd') order by data_id,date_time;
CASE 4:多测点多日
/*sql示例*/
select data_id,date_time,data from hisdata where data_id>=104708704221266921 and data_id <=104708704221266930 and date_time<=TO_DATE('2016-09-21', 'yyyy-MM-dd') and date_time>=TO_DATE('2016-09-18', 'yyyy-MM-dd') order by data_id,date_time
 
即席查询
模拟OLAP环境下的ad hoc查询,包括聚集查询,连接查询,明细查询等
CASE 1:带过滤条件和排序操作的明细查询
/*sql示例*/
select data_id,date_time,data from hisdata where byzid='0001303' and orgid='8000041' an
d date_time<=TO_DATE('2016-09-20', 'yyyy-MM-dd') and date_time>=TO_DATE('2016-09-18', 'yyyy-MM-dd') order by data_id,date_time
CASE 2: 全表聚合查询
/*sql示例*/
select count(*) from hisdata
CASE 3:关联查询
/*sql示例*/
select count(*) from hisDATA c,REINFO r where c.data_id=r.data_id
CASE 4:带过滤条件的聚合查询
/*sql示例*/
select byzid,orgid,max(data),min(data),avg(data) from hisdata where DATATYPE='无功' an
d date_time<=TO_DATE('2016-09-20', 'yyyy-MM-dd') and date_time>=TO_DATE('2016-09-18', 'yyyy-MM-dd') group by byzid,orgid
 
并发查询
采用k-v查询的sql示例作为并发查询的测试素材
 
结果与分析
数据写入
写入时长:
记录行
720w*1
720w*2
720w*4
数据文件大小
350mb*1
350mb*2
350mb*4
并行度(进程数)
1
2
4
CASE 1:数据导入
201s
247s
282s
CASE 2:数据插入
92s
132s
158s
写入效率:
记录行
720w*1
720w*2
720w*4
数据文件大小
350mb*1
350mb*2
350mb*4
并行度(进程数)
1
2
4
CASE 1:数据导入
1.74mb/s
2.83mb/s
4.96mb/s
CASE 2:数据插入
3.8mb/s
5.3mb/s
8.8mb/s
结果分析:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。