一、huge表介绍
huge是一种存储在hdfs文件系统上的列式存储结果,适合海量数据分析查询,虽然支持事务,对于删改通过辅助表记录 因此不适合频繁增删改,可查看达梦系统管理员手册第十六章具体了解。
二、开始测试
数据说明:数据一共200w左右,大小318M,已使用dmfldr导出到文本中,这里用dmfldr快速装载测试插入性能
2.1 创建普通表
CREATE TABLE "SYSDBA"."test1"
(
"a" VARCHAR(100) NOT NULL,
"b" VARCHAR(20),
"c" VARCHAR(100),
"d" VARCHAR(100),
"e" VARCHAR(1000),
"f" VARCHAR(40),
"g" VARCHAR(200),
"h" VARCHAR(200),
"j" TIMESTAMP(0)) STORAGE(ON "MAIN", CLUSTERBTR) ;
D:\dmsoft_data\8_1_3_26pick18\dmdbms\bin>dmfldr.exe userid=SYSDBA/SYSDBA@localhost:8326 MODE='IN' table=TEST1 data='D:\dmsoft_data\fldr\test.txt'
dmfldr V8
控制文件:
加载行数:全部
每次提交服务器行数:50000
跳过行数:0
允许错误数:100
是否直接加载:Yes
是否插入自增列:No
数据是否已按照聚集索引排序:No
字符集:GBK
数据文件共1个:
D:\dmsoft_data\fldr\test.txt
错误文件:fldr.bad
目标表:TEST1
列名 包装数据类型 终止
a CHARACTER |
b CHARACTER |
c CHARACTER |
d CHARACTER |
e CHARACTER |
f CHARACTER |
g CHARACTER |
h CHARACTER |
j CHARACTER |
行缓冲区数量: 8
任务线程数量: 8
62851行记录已提交
125675行记录已提交
188711行记录已提交
252410行记录已提交
314987行记录已提交
377728行记录已提交
440728行记录已提交
504043行记录已提交
567342行记录已提交
630432行记录已提交
694455行记录已提交
758136行记录已提交
822295行记录已提交
885777行记录已提交
950251行记录已提交
1013783行记录已提交
1079359行记录已提交
1145073行记录已提交
1210945行记录已提交
1274488行记录已提交
1338989行记录已提交
1402152行记录已提交
1465694行记录已提交
数据文件少列
数据文件少列
1528834行记录已提交
1592836行记录已提交
1655964行记录已提交
1718195行记录已提交
1780399行记录已提交
1843874行记录已提交
1906891行记录已提交
1970561行记录已提交
2027488行记录已提交
目标表:TEST1
load success.
失败原因: 数据文件少列
2027488 行加载成功。
4 行由于数据错误没有加载。
2 行由于数据格式错误被丢弃。
跳过的逻辑记录总数:0
读取的逻辑记录总数:2027492
拒绝的逻辑记录总数:4
15964.939(ms)已使用
2.2 创建huge表
不记录日志,普通表必须记录
CREATE HUGE TABLE "SYSDBA"."testhuge1"
(
"a" VARCHAR(100),
"b" VARCHAR(20),
"c" VARCHAR(100),
"d" VARCHAR(100),
"e" VARCHAR(1000),
"f" VARCHAR(40),
"h" VARCHAR(200),
"j" VARCHAR(200),
"k" TIMESTAMP(0)) STORAGE(STAT ASYNCHRONOUS, WITH DELTA, SECTION(65536), INITIAL 2, FILESIZE(64), ON "MAIN") LOG NONE ;
插入数据,12773.090(ms)已使用
D:\dmsoft_data\8_1_3_26pick18\dmdbms\bin>dmfldr.exe userid=SYSDBA/SYSDBA@localhost:8326 MODE='IN' table=TESTHUGE1 data='D:\dmsoft_data\fldr\test.txt'
dmfldr V8
控制文件:
加载行数:全部
每次提交服务器行数:50000
跳过行数:0
允许错误数:100
是否直接加载:Yes
是否插入自增列:No
数据是否已按照聚集索引排序:No
字符集:GBK
数据文件共1个:
D:\dmsoft_data\fldr\test.txt
错误文件:fldr.bad
目标表:TESTHUGE1
列名 包装数据类型 终止
a CHARACTER |
b CHARACTER |
c CHARACTER |
d CHARACTER |
e CHARACTER |
f CHARACTER |
h CHARACTER |
j CHARACTER |
k CHARACTER |
行缓冲区数量: 8
任务线程数量: 8
62851行记录已提交
125675行记录已提交
188711行记录已提交
252410行记录已提交
314987行记录已提交
377728行记录已提交
440728行记录已提交
504043行记录已提交
567342行记录已提交
630432行记录已提交
694455行记录已提交
758136行记录已提交
822295行记录已提交
885777行记录已提交
950251行记录已提交
1013783行记录已提交
1079359行记录已提交
1145073行记录已提交
1210945行记录已提交
1274488行记录已提交
1338989行记录已提交
1402152行记录已提交
1465694行记录已提交
1528834行记录已提交
数据文件少列
数据文件少列
1592836行记录已提交
1655964行记录已提交
1718195行记录已提交
1780399行记录已提交
1843874行记录已提交
1906891行记录已提交
1970561行记录已提交
2027488行记录已提交
目标表:TESTHUGE1
load success.
失败原因: 数据文件少列
2027488 行加载成功。
4 行由于数据错误没有加载。
2 行由于数据格式错误被丢弃。
跳过的逻辑记录总数:0
读取的逻辑记录总数:2027492
拒绝的逻辑记录总数:4
12773.090(ms)已使用
2.3 总结
普通表:15964.939(ms)已使用
huge表:12773.090(ms)已使用
插入性能相差是在huge表可以设置不记录日志。
另外做一些聚合查询对比
huge表
sselect count(*),h from testhuge1 group by h;
执行成功, 执行耗时853毫秒. 执行号:3738
普通表
select count(*),h from test1 group by h;
执行成功, 执行耗时5秒 509毫秒. 执行号:3739