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

Information

...

minLevel2

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

  1. Daten immer in Blöcken (Chunks) holen

...

  1. .
  2. Beim Einlesen der ganzen Tabelle OFFSET vermeiden – stattdessen über die letzte ID weiterblättern (Keyset-Pagination).

2) Falls die ganze Tabelle eingelesen wird, OFFSET vermeiden, siehe Beispiel:

...

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 →