为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:x86
【CPU】:64
【问题描述】*:dmfldr模块导入数据是如何工作的?
direct=true时dmfldr 选择快速的载入模式,通过数据的转换和数据的封装直接对 B 树进行操作,省去
了普通插入方式下各个操作符之间的跳转,提升了装载的效率。
1.个人理解是直接写入磁盘文件,但是查看redo日志,同时还会写redo日志并且checkpoint,checkpoint会调用IO线程写入缓冲区的脏页到磁盘。有些矛盾了。。。dmfldr模块导入数据是如何工作的?
2.checkpoint历史记录有TIME_USED,文档未标眀单位,不明确checkpoint的时间是秒还是微秒
首先:
任何数据写入目前都是要写入redo的,不可能跳过这个步骤;所以dmfldr过程中,对于chekpoint这个是预期内的,而且也不太可能有直接写磁盘的方式。
其次,dmfldr为什么快呢?可以关注dmfldr过程中,dmfldr自己的内存占用,实际上他会把数据先排序好,再往服务端的大B树并入,类似这样的方式,大大加快了效率。相当于dmfldr自己给dmserver做了部分事情。
当然,dmfldr的一些日志,和普通插入可能也会有轻微不一样。
备注:1. 附件abc 是一个x86 rh6上编译的服务器监控文件读写调用的命令,用法可以参考链接
2. 日志格式内容,可以用dmserver bin目录下的一些工具进行分析学习:
[user@localhost bin]# ./dmlcvt help
Format: ./dmlcvt KEYWORD=value
Example: ./dmlcvt F_TYPE=4 F_PATH=/opt/dmdbms/data/DAMENG/dm.ini OUT_PATH=/opt/temp
1.应该是写入数据文件,写入数据文件的操作会被记录到redo日志里
checkpoint是将系统缓存区的日志和脏数据页写入磁盘
2.是微秒