Table of Contents

Delete-Funktion beschleunigt

Informationen

  • Kategorien: Kernel | Delete- / Copy-Semantic
  • Version: 16.0.0.4172
  • Veröffentlichungsdatum: Dienstag, 16. Oktober 2012
  • Entwickler: Fischer
  • Benötigt Datenbankänderung: Nein
  • Betreff: Löschen (Delete) beschleunigt

Beschreibung

Löschen benötigt jetzt meist nur noch 3-5% der vorherigen Zeit.

Das Löschen von von pit-FM erfolgt in zwei Phasen:

(1) Prefetch-Phase

Die Prefetch-Phase liest die durch den Löschvorgang zu löschende bzw. zu ändernde Entitys ein, die durch die eingestellte Delete-Semantik definiert sind. In dieser Phase wird noch kein OnDeleting-Trigger gefeuert. Das Prefetching hier erfolgt optimiert.

(2) Delete-Phase.

In der Delete-Phase werden die Entitys wie bisher (d.h. in gleicher Reihenfolge) durchlaufen und gelöscht bzw. geändert. In dieser Phase müssen keine Entitys mehr eingelesen werden (Ausnahme: durch Trigger aufgerufenen Klassenformeln könnten auf Entitys zugreifen, die noch nicht im Cache liegen). Die OnDeleting-Trigger werden aufgerufen. Falls deren Klassenformeln Entitys löschen, werden diese Delete-Aufrufe sofort und vollständig ausgeführt, wieder jeweils optimiert in 2 Phasen. Es kann also zu verschachtelten Delete-Aufrufe kommen (wie zuvor auch).

Falls eine EntityListe gelöscht wird, so kann das Prefetching für alle enthaltenen Entitys parallel erfolgen, d.h. die Anzahl der DB-Zugriffe ist wesentlich kleiner als beim Löschen der einzelnen Entitys.

Siehe auch Dokument zu Prefetching in Klassenformeln.