SAP Knowledge Base Article - Preview

3757285 - SAP HANA Delta merge on NSE table blocks the savepoint

Symptom

  • During a Delta merge for certain large tables stored in NSE, the HANA system performance becomes degraded and even leads to blocked savepoints.
  • Mini Checks report shows the following alerts:
    |M0346|   Long waitForLock savepoint phases (mid-term)|            |                                                            5|             0|X| 2100009|
    |M0537| Tables with long total merge time (short-term)|            |                                               CDPOS (2.70 h)|          none|X| 2057046|
    |M0538|           Long running delta merges (mid-term)|            |                     CDPOS (18) (2067 s, 2026/04/14 17:42:46)|          none|X| 2057046|
    |M0538|           Long running delta merges (mid-term)|            |                      CDPOS (2) (2017 s, 2026/04/14 17:42:46)|          none|X| 2057046|
    |M0538|           Long running delta merges (mid-term)|            |                       DBTABLOG (6314 s, 2026/04/11 10:54:45)|          none|X| 2057046|

    |M2730| Columns with significant NSE buffer size share|hostname|                                     DBTABLOG.LOGDATA (149 %)|          none|X| 2799997|
    |M2735| NSE buffer cache reloads (% per day, mid-term)|hostname|                                                          134|        <= 100|X| 2799997|

  • Savepoint may be blocking the delta merge with a callstack like :

    [SAVEPOINT_SHAREDLOCK_OWNERS]  Owners of shared SavepointLocks: (2026-04-03 03:02:17 159 Local)
    3275745778[thr=259052]: JobWrk109424, TID: 325, UTID: 2152546830, CID: -1, LCID: 0, SEID: 844434391012380, parent: 2434919, SQLUserName: "", AppUserName: "", AppName: "", ConnCtx: ---, StmtCtx: ---, WorkloadCtx: ---, NUMA node: 0, type: "JobWorker", method: "prepareDeltaMerge",
    detail: "IndexName: SAPHANADB:BALDAT Attribute: 214/$trexexternalkey$", command: "" at 0x00007fe82b961131 in __clock_nanosleep_2+0x83 (libc.so.6)
    [OK] in 00:00:00 003
    --

    3275745778[thr=259052]: JobWrk109424 at
       0: 0x00007fe82b961131 in __clock_nanosleep_2+0x82 (libc.so.6)
       1: 0x00007fe82b966e53 in __GI___nanosleep+0x12 (libc.so.6)
       2: 0x00007fe82c6806bc in Execution::sleep(timespec&)+0xa8 at Basis/Execution/impl/Sleep.cpp:33 (libhdbbasis.so)
       3: 0x00007fe82c680861 in Execution::milliSleep(unsigned long)+0x40 at Basis/Execution/impl/Sleep.cpp:60 (libhdbbasis.so)
       4: 0x00007fe83209ca61 in BufferCacheManager::LogicalPageBufferCache::provideControlblockInternal(PageAccess::SizeClass, PageAccess::SizeClass, ResourceManager::ResourceContainer&, PageAccess::LogicalPageAccess&, unsigned long, PageAccess::PageNo const&, ResourceManager::Disposition, PageAccess::ConverterPageControlBlock*, DAEncryption::EncryptionManager*, bool, Synchronization::ReadWriteLockStatistics*, bool)+0x540 at NDS/BufferCache/impl/BufferCache.cpp:464 (libhdbnds.so)
       5: 0x00007fe82f07c5d5 in PageAccess::LogicalPageResourceProvider::provideControlblock(PageAccess::SizeClass, PageAccess::SizeClass, ResourceManager::ResourceContainer&, PageAccess::LogicalPageAccess&, unsigned long, PageAccess::PageNo const&, ResourceManager::Disposition, PageAccess::ConverterPageControlBlock*, DAEncryption::EncryptionManager*, bool, Synchronization::ReadWriteLockStatistics*, bool)+0x121 at DataAccess/PageAccess/impl/LogicalPageResourceProviderImpl.cpp:176 (libhdbdataaccess.so)
       6: 0x00007fe82f06aa95 in PageAccess::LogicalPageAccessImpl::providePreliminaryPage(DataContainer::ContainerID const&, PageAccess::PageType, PageAccess::SizeClass, PageAccess::LogicalPageResourceProvider&, bool)+0x331 at DataAccess/PageAccess/impl/LogicalPageAccessImpl.cpp:943 (libhdbdataaccess.so)
       7: 0x00007fe82f06d2bc in PageAccess::LogicalPageAccessImpl::allocatePage(DataContainer::ContainerID const&, PageAccess::PageType, PageAccess::SizeClass, ResourceManager::Disposition, PageAccess::LogicalPageResourceProvider&, bool)+0x48 at DataAccess/PageAccess/impl/LogicalPageAccessImpl.cpp:1188 (libhdbdataaccess.so)
       8: 0x00007fe82f06d484 in PageAccess::LogicalPageAccess::allocatePage(DataContainer::ContainerID const&, PageAccess::PageType, PageAccess::SizeClass, ResourceManager::Disposition, PageAccess::LogicalPageResourceProvider&, bool)+0x10 at DataAccess/PageAccess/impl/LogicalPageAccessImpl.cpp:368 (libhdbdataaccess.so)
       9: 0x00007fe82edfd7d0 in DataContainer::ContainerImpl::allocatePage(PageAccess::PageType, PageAccess::SizeClass, ResourceManager::Disposition, PageAccess::LogicalPageResourceProvider&, bool) const+0x60 at DataAccess/DataContainer/impl/ContainerImpl.cpp:929 (libhdbdataaccess.so)
      10: 0x00007fe83285a466 in UnifiedTable::BufferedPageChain::allocatePage(PageAccess::PageType, PageAccess::SizeClass, ResourceManager::Disposition)+0x162 at UnifiedTable/Paging/impl/PageChain.cpp:1452 (libhdbunifiedtable.so)
      11: 0x00007fe832875cc4 in UnifiedTable::DictionaryPagedBlockProvider::newPageSpanningDictBlock(ltt::versioned_gc_queue&, UnifiedTable::PersDictionaryDescriptor const&, PageAccess::SizeClass, bool, UnifiedTable::DictionaryHeaderInit const&)::{lambda(ResourceManager::Disposition)#1}::operator()(ResourceManager::Disposition) const+0x40 at UnifiedTable/Paging/impl/PagedDictionaryBlockHandler.cpp:401 (libhdbunifiedtable.so)
      12: 0x00007fe8328768a0 in UnifiedTable::DictionaryPagedBlockProvider::newPageSpanningDictBlock(ltt::versioned_gc_queue&, UnifiedTable::PersDictionaryDescriptor const&, PageAccess::SizeClass, bool, UnifiedTable::DictionaryHeaderInit const&)+0x3e0 at UnifiedTable/Paging/impl/PagedDictionaryBlockHandler.cpp:473 (libhdbunifiedtable.so)
      13: 0x00007fe8328769c4 in UnifiedTable::DictionaryPagedBlockProvider::newPageSpanningDictBlock(ltt::versioned_gc_queue&, UnifiedTable::PersDictionaryDescriptor const&, PageAccess::SizeClass, UnifiedTable::DictionaryHeaderInit const&)+0x10 at UnifiedTable/Paging/impl/PagedDictionaryBlockHandler.cpp:364 (libhdbunifiedtable.so)
      14: 0x00007fe8325f6a9f in UnifiedTable::PagedDictionaryBlockHandler::newPageSpanningDictBlock(ltt::versioned_gc_queue&, PageAccess::SizeClass, UnifiedTable::DictionaryHeaderInit const&)+0x6b at UnifiedTable/Paging/spi/DictionaryPagedBlockProvider.hpp:578 (libhdbunifiedtable.so)
      15: 0x00007fe832662287 in UnifiedTable::MainVarDictionaryStorageBase::getNewDictionaryBlock(PageAccess::SizeClass)+0x43 at UnifiedTable/Dictionary/impl/MainVarDictionaryStorage.cpp:824 (libhdbunifiedtable.so)
      16: 0x00007fe83266a839 in UnifiedTable::MainVarDictionaryStorageBase::sortedAddImpl(DataAccess::ConsistentChange&, void const*, unsigned long, PageAccess::SizeClass)+0x385 at UnifiedTable/Dictionary/impl/MainVarDictionaryStorage.cpp:1396 (libhdbunifiedtable.so)
      17: 0x00007fe83cb04893 in AttributeEngine::RoDict<TRexUtils::CESU8>::sortedAdd(AttributeEngine::DictionaryModificationGuard&, char const*, unsigned long, int)+0x50 at AttributeEngine/Main/Dictionary/RoDictUnified.cpp:2181 (libhdbcs.so)
      18: 0x00007fe83c318d9c in AttributeEngine::DeltaMerge::CreateDictionaryStep<TrexTypes::StringAttributeValue, AttributeEngine::ValueDict<TrexTypes::StringAttributeValue>, AttributeEngine::BTreeAttribute<TrexTypes::StringAttributeValue> >::doStepImpl()+0x798 at AttributeEngine/Main/Dictionary/StringDict.h:240 (libhdbcs.so)
      19: 0x00007fe83c37aabc in AttributeEngine::DeltaMerge::SingleMergePipeline<TrexTypes::StringAttributeValue, AttributeEngine::ValueDict<TrexTypes::StringAttributeValue>, AttributeEngine::BTreeAttribute<TrexTypes::StringAttributeValue>, NDS::Primitives::PagedIndexVector>::merge(AttributeEngine::BTreeAttribute<TrexTypes::StringAttributeValue> const&, AttributeEngine::DeltaMerge::AttributeMergeData&, AttributeEngine::ValueDict<TrexTypes::StringAttributeValue>&, AttributeEngine::DeltaMerge::PrepareNewDictCallback<AttributeEngine::ValueDict<TrexTypes::StringAttributeValue> >&, NDS::Primitives::PagedIndexVector&, unsigned long&)+0x348 at AttributeEngine/DeltaMerge/SingleMergePipeline.cpp:164 (libhdbcs.so)
      20: 0x00007fe83d35a472 in AttributeEngine::PagedAttribute<TrexTypes::StringAttributeValue, AttributeEngine::ValueDict<TrexTypes::StringAttributeValue> >::mergeOldIntoNew(AttributeEngine::AttributeValueContainer const&, AttributeEngine::DeltaMerge::AttributeMergeData&)+0x2b0 at AttributeEngine/Main/PagedAttributeDef.h:4472 (libhdbcs.so)
      21: 0x00007fe841ffd122 in AttributeEngine::MemoryAvc2::prepareDeltaMerge(AttributeEngine::AttributeValueContainer&, AttributeEngine::DeltaMerge::AttributeMergeData&)+0xa0 at AttributeEngine/AttributeValueContainer.cpp:3139 (libhdbcs.so)
      22: 0x00007fe841dba59b in AttributeEngine::AttributeApi::prepareDeltaMerge(TrexBase::IndexName const&, AttributeEngine::DeltaMerge::AttributeMergeData&)+0x627 at AttributeEngine/AttributeApi.cpp:1656 (libhdbcs.so)
      23: 0x00007fe85265504c in TRexAPI::MergeAttributeJob::doMerge(TRexAPI::ColumnMergeData&, TRexAPI::DeltaMergeState&, bool)+0x48 at ims_search_api/DeltaMerge/MergeAttributeJob.cpp:176 (libhdbcsapi.so)
      24: 0x00007fe852655b0f in TRexAPI::MergeAttributeJob::run(Execution::Context&, Execution::JobObject&)+0x19b at ims_search_api/DeltaMerge/MergeAttributeJob.cpp:293 (libhdbcsapi.so)
      25: 0x00007fe82c6335ea in Execution::JobObjectImpl::run(Execution::JobWorker*)+0x1416 at Basis/Execution/impl/JobExecutorRunJob.cpp:772 (libhdbbasis.so)
      26: 0x00007fe82c63528a in Execution::JobWorker::runJob(ltt::smartptr_handle<Execution::JobObjectForHandle>&)+0x896 at Basis/Execution/impl/JobExecutorThreads.cpp:379 (libhdbbasis.so)
      27: 0x00007fe82c636678 in Execution::JobWorker::run(Execution::ThreadRC&)+0x734 at Basis/Execution/impl/JobExecutorThreads.cpp:1382 (libhdbbasis.so)
      28: 0x00007fe82c681ec1 in Execution::Thread::staticMainImp(Execution::Thread*)+0x5e0 at Basis/Execution/impl/Thread.cpp:605 (libhdbbasis.so)
      29: 0x00007fe82c68275f in Execution::pthreadFunctionWrapper(Execution::Thread*)+0x1eb at Basis/Execution/impl/ThreadInterposition.cpp:691 (libhdbbasis.so)
      30: 0x00007fe82d9806da in start_thread+0xd8 (libpthread.so.0)
    31: 0x00007fe82b99d53f in __GI___clone+0x3d (libc.so.6)

 

  • The NSE Buffer cache details show that CDPOS and DBTABLOG are much larger than the max buffer cache size (MAX_SIZE_GB) and thus prone to reloads between NSE cache in memory and persistence (PAGED_GB vs BUFF_GB).

    HANA_NSE_BufferCache_*
    HANA_NSE_BufferCache_Tables_*
    HANA_Memory_Overview_*

    ------------------------------------------------------------------------------------------------------------------------------------------------
    |      SNAPSHOT_TIME|ST|        HOST| PORT|WARM_GB|MAX_SIZE_GB|ALLOC_GB|USED_GB|IO_SIZE_GB|HIT_PCT|BUFF_KB|BUFF_TOT_GB|BUFF_HOT_GB|BUFF_FREE_GB|
    ------------------------------------------------------------------------------------------------------------------------------------------------
    |2026/04/15 14:24:46| 0|Hostname|30440| 718.45|     146.48|  146.48| 133.83| 377816.46|  99.26|      4|       0.00|       0.00|        0.00|
    |                   |  |            |     |       |           |        |       |          |       |     16|       0.00|       0.00|        0.00|
    |                   |  |            |     |       |           |        |       |          |       |     64|       0.01|       0.01|        0.00|
    |                   |  |            |     |       |           |        |       |          |       |    256|     131.07|     130.13|        0.88|
    |                   |  |            |     |       |           |        |       |          |       |   1024|      14.95|       1.05|       11.75|
    ------------------------------------------------------------------------------------------------------------------------------------------------

    ------------------------------------------------------------------------------------------------
    |        HOST| PORT|TOT_BUFF_GB|SCHEMA_NAME|      TABLE_NAME|PAGED_GB|BUFF_GB|BUFF_PCT|USED_PCT|
    ------------------------------------------------------------------------------------------------
    |Hostname|30440|     146.48|  SAPHANADB|           CDPOS|  392.29| 111.80|   28.50|   76.32|
    |Hostname|30440|     146.48|  SAPHANADB|        DBTABLOG|  281.53|  15.68|    5.57|   10.71|
    |Hostname|30440|     146.48|  SAPHANADB|          BALDAT|   32.95|   1.81|    5.51|    1.24|
    |Hostname|30440|     146.48|  SAPHANADB|         D010TAB|    1.54|   0.82|   53.77|    0.56|
    |Hostname|30440|     146.48|  SAPHANADB|         D010INC|    0.76|   0.76|   99.85|    0.52|



    ------------------------------------------------------------------------------------------------------------------------------------------------
    |                             NAME|TOTAL_GB|            DETAIL_GB|                                                                   DETAIL2_GB|
    ------------------------------------------------------------------------------------------------------------------------------------------------

    |                                 |        |                     |                                                                             |
    |                Column store size|     999|   999 (Hostname)|                                                                  120 (CDPOS)|
    |                                 |        |                     |                                                                  80 (ACDOCA)|
    |                                 |        |                     |                                                           75 (PRCD_ELEMENTS)|
    |                                 |        |                     |                                                                    40 (BSEG)|
    |                                 |        |                     |                                                                   37 (CDHDR)|
    |                                 |        |                     |                                                        29 (FAGL_SPLINFO_VAL)|
    |                                 |        |                     |                                                                  29 (ACCTCR)|
    |                                 |        |                     |                                                                    22 (JCDS)|
    |                                 |        |                     |                                                                    21 (OBJK)|
    |                                 |        |                     |                                                                17 (BSAS_BCK)|
    |                                 |        |                     |                                                                             |

    |                                 |        |                     |                                                                             |
    |                   NSE table size|     134|   134 (Hostname)|                                                                  112 (CDPOS)|
    |                                 |        |                     |                                                                16 (DBTABLOG)|
    |                                 |        |                     |                                                                   2 (BALDAT)|
    |                                 |        |                     |                                                                  1 (D010TAB)|
    |                                 |        |                     |                                                                  1 (D010INC)|
    |                                 |        |                     |                                                                    1 (DD03L)|
    |                                 |        |                     |                                                                             |
    |                        Disk size|    4094|        4094 (global)|                                                             1003 (SOFFCONT1)|
    |                                 |        |                     |                                                               502 (DBTABLOG)|
    |                                 |        |                     |                                                                  399 (CDPOS)|
    |                                 |        |                     |                                                          243 (DHCDC_RTSTORE)|
    |                                 |        |                     |                                                         145 (GRACSODREPDATA)|
    |                                 |        |                     |                                                          138 (ZTPL_POD_LOG1)|
    |                                 |        |                     |                                                           138 (ZTPL_POD_LOG)|
    |                                 |        |                     |                                                          117 (ZGDM_POD_LOG1)|
    |                                 |        |                     |                                                                  76 (ACDOCA)|
    |                                 |        |                     |                                                           74 (PRCD_ELEMENTS)|
    ------------------------------------------------------------------------------------------------------------------------------------------------


Read more...

Environment

SAP HANA Platform Edition 2.0

Keywords

KBA , HAN-DB-NSE , SAP HANA Native Storage Extension , Problem

About this page

This is a preview of a SAP Knowledge Base Article. Click more to access the full version on SAP for Me (Login required).

Search for additional results

Visit SAP Support Portal's SAP Notes and KBA Search.