Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Auszug
hiddentrue

Nuclos Performance große Tabellen: Chunk, chunkSize, OFFSET vermeiden, Keyset, getEntityObjectsChunk, Millionen Datensätze.

globe with meridians Sprache: Deutsch · English

hammer and wrench Sehr große Tabellen performant auslesen und verarbeiten. (Millionen Datensätze)

Große Tabellen performant verarbeiten – in Chunks lesen und OFFSET durch Keyset-Pagination ersetzen.

Status
colourPurple
titleHow-to
Status
colourBlue
titleEntwickler
Status
colourGreen
titleStand: Jul 2026
Status
colourGrey
titlegilt fuer Nuclos 4.2026.x

Panel
bgColor#F4F5F7

Auf dieser Seite

Inhalt
maxLevel2
minLevel2

Zwei Grundregeln, um sehr große Tabellen (Millionen Datensätze) performant zu verarbeiten.

  1. Daten immer in Blöcken (Chunks) holen.
  2. Beim Einlesen der ganzen Tabelle OFFSET vermeiden – stattdessen über die letzte ID weiterblättern (Keyset-Pagination).
Codeblock
languagejava
final long CHUNKSIZE = 5000;
 
long lastID = 0L;
 
Map<UID, FieldMeta<?>> mpFields = metaProvider.getAllEntityFieldsByEntity(entity);
DbQueryBuilder builder = dataBaseHelper.getDbAccess().getQueryBuilder();
 
for (;;) {
 DbCondition cond = builder.plainCondition("t.INTID > " + lastID);
 
 CollectableSearchCondition csc = new CollectableDbCondition(cond);
 CollectableSearchExpression cse = new CollectableSearchExpression(csc);
 
 Collection<EntityObjectVO<Long>> lstEOs = entityObjectFacade.getEntityObjectsChunk(entity, mpFields.values(), null, cse, 0L, CHUNKSIZE - 1);
      
 if (lstEOs.isEmpty()) {
   return;
 }
               
 for (EntityObjectVO<Long> eo : lstEOs) {
   ....
     
  lastID = eo.getPrimaryKey();
 }
      
 }

Verwandte Seiten

gear Festlegungen für Nuclos API Entwicklung


API.

Öffnen →