最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

SAP HANA 数据文件导入优化技术

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-30 10:10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本文针对csv文件导入到HANA速度进行优化,以测试数据导入速度与那些因素相关,使用哪些方法能加快csv文件导入速度,以获取HANA的最快导入速度。
硬件因素
SAP HANA的极限导入速度是与硬件的配置相关的,无论我们在软件层面做多少工作,硬件的配置是影响导入速度极限的重要因素,本人总结以下几项硬件配置主要影响SAP HANA的导入极限速度。
  • 硬盘类型
由于SAP HANA导入数据会实时地将事务log,delta log写到硬盘中,因此硬盘的读写速度尤为重要。推荐使用SSD作为Log区和Data区的硬盘,并且将需导入的csv文件放入SSD中,以达到最快读取速度。
  • CPU核数
SAP HANA支持利用多线程并行导入数据,因此CPU核数决定了导入数据的并行程度。核数越多,并行程度越好,导入速度越快。
  • 内存大小
SAP HANA是内存数据库,因此数据导入到数据库内存空间是最核心的内容,如果内存不够大,导入的数据会导致SAP HANA数据库内存不足,从而需要unload其他数据以腾出空间,降低导入效率。另一个原因是,在读取csv文件的过程中,csv文件会被读取到cache中,这会占用一部分内存。当cache占用过多内存的情况下,linux系统会自动释放cache以供SAP HANA使用,这个释放的过程也会影响到导入效率。因此通过实验,若想达到最大导入速度,本人推荐剩余的内存空间需达到导入文件所占磁盘2倍。
导入文件因素
针对导入文件有以下因素可影响导入速度。
  • 导入文件格式是否全部正确
如果csv文件包含不符合元组格式的数据,则此次batch的导入全部失败,从而导入数据不一致,会降低导入速度。例如csv中某些字段长度超过SAP HANA表定义的字段长度。(在导入文件包含中文时经常发生此类问题)
  • 导入文件大小
SAP HANA导入单个csv文件时,可利用多线程技术,并行导入此文件,但如果文件太小,就无法充分利用所有线程来并行导入文件。通过实验,每个csv文件大小超过(100M*线程数)则不会影响导入速度的提升。
  • 多进程导入文件
若包含多个csv文件进行导入,有两种方式:利用足够多的线程串行导入所有csv文件或者利用多个进程并行导入csv文件。经测试,第二种方式不会加快导入速度,反而当进程数多于3个时,导入速度降低。因此推荐采用足够多的线程串行导入所有csv文件。
SAP HANA内部因素
在SAP HANA中,数据既存储在内存中也存储在硬盘中,同时也会记录在日志中,因此,达到最大导入速度,最重要的是数据到达SAP HANA内存中,因此需要舍弃一些影响导入速度的设置,以达到极限速度。
Partition
在导入前对大表进行partition有助于并行插入数据,可提高导入速度。经测试,线程数是partition数的整数倍时速度较快。方式为Hash partition,并且类型为数字类型效时率最高。举例:
alter table "table name" partition by hash(col1,col2) partitions 10;
Auto merge
对列存储而言,插入的数据会存储在目标表的Delta区,在导入过程中系统会自动的将Delta区数据merge到main区,此过程不能进行数据的导入,因此需要在导入前disable auto merge保证导入过程不会进行merge,从而提升导入效率。可在导入操作结束后统一进行merge。举例:
alter table "table name" disable automerge ;
Delta log
对列存储而言,导入过程中,SAP HANA需同步将Delta log写入到硬盘以保证重启系统后,Delta 区的数据可以恢复。此过程会影响导入效率,在导入数据之前,可通过Disable delta log的方式,以牺牲数据安全性的代价来提高导入效率,在导入结束,进行merge后,enable delta log即可恢复安全。(注:若关闭Delta log,在导入过程中发生系统崩溃,则已导入数的数据将会丢失,需重新导入。)举例:
alter table "table name" disable delta log ;
导入线程数
为了充分利用多核的并行优势,在导入数据时可以指定线程数。经实验,线程数=CPU核数时,CPU使用量可超过90%。举例:
import from csv file 'csv path’ into  “table name” with threads [CPU cores];

Batch数量
SAP HANA导入数据是分批导入的,因此每批次导入数据的条数会影响导入效率,经实验,每次导入100000导入效率最高。举例:
import from csv file 'csv path’ into  “table name” with threads [CPU cores] batch 100000;
总结
根据两款不同的硬件配置,得出最大导入速度不同,具体如下。
硬件配置
导入速度
CPU: 16 cores
Memory: 256GB
硬盘:SSD
100M/s
CPU: 80 cores
Memory: 1TB
硬盘: SSD
  • 308.8M/s
导入操作的具体操作流程如下图所示。




楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-5 08:09

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表