Project

General

Profile

Actions

Support #19031

open

Report / SQL Caching

Added by Carsten Rose 10 days ago. Updated 7 days ago.

Status:
New
Priority:
High
Assignee:
Carsten Rose
Target version:
Start date:
07.07.2024
Due date:
% Done:

0%

Estimated time:
Discuss:
Prio Planung:
No
Vote:

Description

Wenn viele Queries in einem Report gefeuert werden kann das Laden sehr langsam sein.

Idee:

  • In einem Report kann auf einem oder mehreren Level ein 'cache' aktiviert werden.
  • Bsp: 10.cache=S:action,grId|R:vId,grId,&{{dynamic:R}}|Y:semId
  • Der Content, den ein Level (und darunter) ausgibt, wird gespeichert in der Tabelle `CacheReport` in einem Record.
  • CacheReport.columns: key / qfqSession / content / expire / storeRecord (serialized)
  • Der Key zu einem Cache-Eintrag setzt sich zusammen aus dem QFQ Session Cookie und den definierten Parameter.
    • Durch das Cookie ist der Cache invalid bei einer neuen Browsersession.
      • Ist das gut oder schlecht?
      • Es ist damit auf jedenfall fe-user based - damit sind die Berechtigungen geklaert.
    • Existiert ein {{pIdUser:Y}} wird dieser automatisch dem Key hinzugefuegt. Damit ist ein SwitchUser automatisch aktiv und bekommt die richtigen Daten.
    • {{dynamic:R}}: das ist ein Wert (kein Variablenname) der im Report, vor dem zu cachenden Level, berechnet wird und als Value in den Key kommt. Bsp: bei t=0 gibt es eine Paar Records mit dem Wert x, bei t=1 haben diese den Wert y.
  • Gibt es einen Cache Eintrag, wird die Query nicht ausgefuehrt, sondern vom Cache geladen.
  • Der Original Record Store wird gemerged mit dem aktuellen.
  • Enthaelt der Report Columns mit `... AS _exec` ist ein Speichern nicht moeglich.
  • Es gibt einen Button/Meachnisnus den aktuellen Cache invalid zu machen.
    • Dies kann einfach erkannt werden beim fuellen das Caches: '_exec' wirft eine Exception wenn ein 'cache' aktiv ist.
  • Gibt es noch weitere Bedingungen die ein cachen verbieten sollten?
Actions #1

Updated by Carsten Rose 10 days ago

  • Description updated (diff)
Actions #2

Updated by Carsten Rose 10 days ago

  • Description updated (diff)
  • Assignee set to Carsten Rose
  • Target version changed from 24.8.0 to CodingWeek2024
Actions #3

Updated by Carsten Rose 10 days ago

  • Description updated (diff)
Actions #4

Updated by Carsten Rose 10 days ago

  • Description updated (diff)
Actions #5

Updated by Carsten Rose 10 days ago

  • Description updated (diff)
Actions #6

Updated by Carsten Rose 10 days ago

  • Priority changed from Normal to High
Actions #7

Updated by Carsten Rose 7 days ago

  • Description updated (diff)
Actions

Also available in: Atom PDF