为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Linux
【CPU】:
【问题描述】*:
表为分区表,分区规则为:Hash
使用dmfldr direct=true模式下导入数据成功后,直接查询全表是可以查询的到数据
但是按分区字段查询,无法查询到数据
按非分区字段查询,可以查询到数据
分区字段like查询,又可以查询到数据
请问一下这种情况如何解决?需要修改什么参数配置还是如何处理?或者有没有类似于oracle的row move(行移动)功能,我怀疑是快速装载模式数据未落入正确的分区中导致的。
还有,direct=false情况下,数据是正常的,但是数据导入效率太差,经反复测试,效率基本与批处理差不多
开启DIRECT后确实可能会绕过部分有效性维护,如果不希望单独处理,可以尝试在保持正确性前提下调整导入参数看是否达到相应预期
BUFFER_NODE_SIZE
READ_ROWS
ROWS
BLDR_NUM
BDTA_SIZE
PARALLEL
FLUSH_FLAG
LOG_SIZE
COMMIT_OPTION
具体参数可参考文档
https://eco.dameng.com/document/dm/zh-cn/pm/getting-started-dmfldr.html
或者自行确认数据内容实际应当存放的分区后,对子表直接进行导入,这样可以借助DIRECT绕过逻辑处理最大化导入速度,具体在控制文件中TABLE直接写分区子表名称既可
例如分区表
create table test.FLDRTEST(
id int,
name varchar(100),
dt date)
PARTITION BY RANGE(id)(
PARTITION P1 VALUES LESS THAN (1),
PARTITION P2 VALUES LESS THAN (2),
PARTITION P3 VALUES LESS THAN (3),
PARTITION P4 VALUES LESS THAN (MAXVALUE)
);
导入子表时
LOAD DATA
INFILE ‘/home/dmdba/fldrtest.txt’
INTO TABLE TEST.FLDRTEST_P1
FIELDS ‘,’