达梦逻辑备份-数据导入导出的正确姿势-为什么导入这么慢

现象描述

一个表2GB ,数据量1kw ,导入的时候,为什么要将近2h

 

这里只是针对一个一般疑惑,来协助大家认识达梦数据库使用下,dimp 的一个参数,能够帮助大家把2h 导入,在5min 内完成。

处理方法

Dimp 导入时,加上参数 FAST_LOAD=Y

 

数据比对:

在不加 fast_load=y 时,导入是普通模式,dmserver io 速度在 2-3 MBps

在加上fast_load=y 时,导入为快速加载,dmserver io 速度在 90-120MBps

 

背景:

 

其实关于dimp 在早期有段时间,fast_load 默认值为Y ,但是现在默认值改为N 了,

1.        本身 fast_load 如果在表含有大字段的时候,快速加载模式反而会更慢

2.        而且如果fast_load 需要的内存资源比较大

3.        在启用了快速加载时,索引之类的默认是滞后处理(也有参数设置),可能会导入重复数据,而且在导入完成后,索引重建失败(违反唯一性冲突等)

 

关于参数设置,大家使用命令前,可以养成学习了解help 的习惯:

TASK_THREAD_NUMBER     用于设置 dmfldr 处理用户数据的线程数目

BUFFER_NODE_SIZE       用于设置 dmfldr 读入文件缓冲区大小

TASK_SEND_NODE_NUMBER  用于设置 dmfldr 发送节点个数 [16,65535]

LOB_NOT_FAST_LOAD      如果一个表含有大字段,那么不使用 dmfldr ,因为 dmfldr 是一行一行提交的

PRIMARY_CONFLICT       主键冲突的处理方式 [IGNORE|OVERWRITE], 默认报错

 

完成的参数介绍如下:

PS E:\OneDrive - business\DM_DBMS\DBMS_20190917-v8\bin> dimp help

dimp V8

格式 : dimp.exe KEYWORD=value KEYWORD=(value1,value2,...,vlaueN)

 

例程 : dimp.exe SYSDBA/SYSDBA   IGNORE=Y ROWS=Y FULL=Y

 

USERID 必须是命令行中的第一个参数

 

关键字                  说明(默认值)

--------------------------------------------------------------------------------

USERID                 用户名 / 口令 格式 :USER/PWD*MPP_TYPE@SERVER:PORT#SSLPATH@SSLPWD

FILE                   导入文件名称 (dexp.dmp)

DIRECTORY              导入文件所在目录

FULL                   整库导入 (N)

OWNER                  以用户方式导入 格式   (user1,user2,...)

SCHEMAS                以模式方式导入 格式   (schema1,schema2,...)

TABLES                 以表名方式导入 格式 (table1,table2,...)

PARALLEL               用于指定导入的过程中所使用的线程数目

TABLE_PARALLEL         用于指定导入的过程中每个表所使用的子线程数目 , FAST_LOAD Y 时有效

IGNORE                 忽略创建错误 (N)

TABLE_EXISTS_ACTION    需要的导入表在目标库中存在时采取的操作 [SKIP | APPEND | TRUNCATE |   REPLACE]

FAST_LOAD              是否使用 dmfldr 来导数据 (N)

FLDR_ORDER             使用 dmfldr 是否需要严格按顺序来导数据 (Y)

COMMIT_ROWS            批量提交的行数 (5000)

EXCLUDE                忽略指定的对象 格式

                           格式   EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)

GRANTS                 导入权限 (Y)

CONSTRAINTS            导入约束 (Y)

INDEXES                 导入索引 (Y)

TRIGGERS               导入触发器 (Y)

ROWS                   导入数据行 (Y)

LOG                    指定日志文件

NOLOGFILE              不使用日志文件 (N)

NOLOG                  屏幕上不显示日志信息 (N)

LOG_WRITE              日志信息实时写入文件 (N): (Y), (N)

DUMMY                  交互信息处理 (P): 打印 (P), 所有交互都按 YES 处理 (Y),NO(N)

PARFILE                参数文件名

FEEDBACK               x 行显示进度 (0)

COMPILE                编译过程 , 程序包和函数 ... (Y)

INDEXFILE              将表的索引 / 约束信息写入指定的文件

INDEXFIRST             导入时先建索引 (N)

REMAP_SCHEMA           格式 (SOURCE_SCHEMA:TARGET_SCHEMA)

                       SOURCE_SCHEMA 中的数据导入到 TARGET_SCHEMA

ENCRYPT_PASSWORD       数据的加密密钥

ENCRYPT_NAME           加密算法的名称

SHOW/DESCRIBE          打印出指定文件的信息 (N)

LOCAL                  MPP 模式下登录使用 MPP_LOCAL 方式 (N)

TASK_THREAD_NUMBER      用于设置 dmfldr 处理用户数据的线程数目

BUFFER_NODE_SIZE       用于设置 dmfldr 读入文件缓冲区大小

TASK_SEND_NODE_NUMBER  用于设置 dmfldr 发送节点个数 [16,65535]

LOB_NOT_FAST_LOAD      如果一个表含有大字段,那么不使用 dmfldr ,因为 dmfldr 是一行一行提交的

PRIMARY_CONFLICT       主键冲突的处理方式 [IGNORE|OVERWRITE], 默认报错

TABLE_FIRST             是否先导入表 (N): (Y), (N)

HELP                   打印帮助信息

 

PS E:\OneDrive - business\DM_DBMS\DBMS_20190917-v8\bin>

 


请使用浏览器的分享功能分享到微信等