「内存数据库」调整插入和数据负载的HANA性能

简介: 「内存数据库」调整插入和数据负载的HANA性能


插入和数据加载将写入新数据,而SELECT、UPDATE或DELETE等其他操作必须对现有数据进行操作。

因此,典型的性能因素是部分不同的。如果你想提高插入和数据加载的性能,你可以考虑以下方面:

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 "<table_name>" IN EXCLUSIVE MODE

之后,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

2.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
相关文章
|
17天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
7天前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
29 5
|
10天前
|
监控 安全 程序员
如何使用内存池池来优化应用程序性能
如何使用内存池池来优化应用程序性能
|
13天前
|
存储 缓存 Java
结构体和类在内存管理方面的差异对程序性能有何影响?
【10月更文挑战第30天】结构体和类在内存管理方面的差异对程序性能有着重要的影响。在实际编程中,需要根据具体的应用场景和性能要求,合理地选择使用结构体或类,以优化程序的性能和内存使用效率。
|
17天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
16天前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
55 1
|
16天前
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
35 1
|
16天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
38 1
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
85 1
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0