因此,典型的性能因素是部分不同的。如果你想提高插入和数据加载的性能,你可以考虑以下方面:
Area Details
Lock waits
参见1999998,如果需要,优化锁等待情况。插入必须等待锁的典型情况是:
- 重要的保存点阶段
- 同一主键的并发插入
- SAP HANA内部锁
- 同一表上的DDL操作已激活
Columns
在插入期间,必须分别维护每一列,因此插入时间在很大程度上取决于表列的数量。
Indexes
每个现有索引都会减慢插入操作的速度。检查是否可以在大量插入和数据加载期间减少索引的数量。SAP BW提供了在数据加载期间自动删除和重新创建索引的可能性。主索引通常不能被删除。
Bulk load
如果加载了大量记录,就不应该对每条记录执行插入。相反,您应该尽可能利用批量加载选项(即使用单个插入操作插入多个记录)。
Parallelism
如果加载了大量记录,则应该考虑客户端上的并行性,以便使用到SAP HANA的多个连接来加载数据。
Commits
确保在执行大规模插入时定期执行COMMIT (after each bulk of a bulk load)。
Delta merge
大的增量存储会降低负载性能,所以要确保定期执行增量合并。
避免重复合并小的增量存储或使用大量未提交的数据,以避免不必要的开销。
Table vs. record lock
如果只可能进行一次非并行插入,并且不需要对底层表进行并发更改,那么使用全局表锁而不是大量的单独记录锁可能会很有用。表锁可以通过以下方式设置:
LOCK TABLE "
之后,SAP HANA不再需要维护单独的记录锁。这种方法也适用于INSERT…选择可以在内部并行化的操作。
Savepoints
需要保存点将修改后的数据写入磁盘。通常的主要意图是尽可能缩短阻塞保存点阶段,同时接受较长的保存点持续时间。在大量导入期间,相反的情况可能更好:保存点更短,阻塞阶段增加的风险更大。较短的保存点可以减少写入磁盘的数据量,还可以减少需要保留的日志量,从而降低文件系统溢出的风险。
在大量更改期间,可以考虑以下参数调整来减少总体保存点持续时间:
- lower values for global.ini -> [persistence] -> savepoint_max_pre_critical_flush_duration (e.g. 300 instead of 900)
- higher values for global.ini -> [persistence] -> savepoint_pre_critical_flush_retry_threshold (e.g. 10000 instead of 3000)
Bugs
以下SAP HANA bug可能会对插入性能产生负面影响:
Impacted RevisionsDetails 1.00.120 - 1.00.122.11
00.000 - 2.00.012.00如果大量的空间数据是在没有提交的情况下逐行插入的,那么由于SAP HANA bug和调用堆栈模块AttributeEngine::spatialae::DeltaComponents::reserveDocid所花费的大量时间,性能可能会很差。作为“GeometryDeltaAttribute锁”上的次要影响争用是可能的。
典型的吞吐量
- 问题情况,如长临界保存点阶段或其他锁
- < 500 records / second
- 正常的、连续的单行插入
- 1,000 - 10,000 records / second
- 高度并行的批量加载
- 1,000,000 records / second
原文:https://www.stechies.com/performance-inserts-data-loads-tuned/
本文:https://pub.intelligentx.net/tuning-hana-performance-inserts-and-data-loads
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 在 Java 中抛出异常后继续运行会有哪些情况呢?(java抛出异常后继续运行会怎么样)
- 【JavaScript】ES6 中class定义类
- Linux应急故事之四两拨千斤:黑客一个小小玩法,如何看瞎双眼
- 在 Java 中,requestbody 的具体用法究竟是什么?(java中requestbody的用法是什么)
- 小米应用商店国际版分发量突破32亿月活跃用户增长10倍
- 如何在 Java 中有效地测试 ActionListener?(如何测试Java中的ActionListener)
- 编程语言的巅峰境界
- 网络慢是带宽不足?优化网络带宽的5个小窍门
- Kotlin继续助力Android开发,并计划涉足更多领域
- 新主题新规划 CITE 2019瞭望智慧未来