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.