Kontrolle über den Cache-Manager übernehmen

4D v16 hat einen neuen, vollständig optimierten Cache-Manager für die 64-Bit-Produktlinie eingeführt. 4D v16 R2 gibt unseren fortgeschrittenen 4D Entwicklern die Möglichkeit, die Kontrolle selbst in die Hand zu nehmen!

Der interne Algorithmus des Cache-Managers basiert auf einem Prioritätskonzept, das jedem Objekttyp für die Speicherung im Cache-Speicher zugeordnet ist. Standardmäßig weist der Cache-Manager-Algorithmus einem Index einen höheren Prioritätswert zu als einem Datensatz. Und kürzlich verwendete Objekte (Datensätze oder Indizes) haben eine höhere Priorität, um im Cache zu verbleiben, als Objekte, die in den letzten zwei Tagen nicht verwendet wurden, usw…

Unter 4D v16 R2 kann der 4D Entwickler die Kontrolle übernehmen. Beim Start können Sie die Prioritäten im Cache für Ihre Tabellen, Indizes und „großen Objekte“ je nach den Bedürfnissen Ihrer Anwendung fein abstimmen. Darüber hinaus können Sie sogar Ausnahmen für einen einzelnen Prozess definieren. Wenn bestimmte Vorgänge ausgeführt werden müssen, wie z. B. ein großer Import, kann der 4D Entwickler am besten entscheiden, welche Tabelle oder welcher Index für einen bestimmten Zeitraum die höhere Priorität im Cache haben soll.

Neue Befehle zur Steuerung der Priorität

Eine Reihe neuer Befehle ermöglicht sehr feine Anpassungen: für jeden Index, jede Tabelle, sogar mit Unterschieden für den Hauptdatensatz und die „großen Teile“ (Blobs / Text / Bilder / Objekte).

Definieren Sie beim Start die Priorität für alle Prozesse

SET TABLE CACHE PRIORITY
SET INDEX CACHE PRIORITY
SET BLOBS CACHE PRIORITY

Erhöhen oder Verringern der beim Start festgelegten Priorität für den aktuellen Prozess

ADJUST TABLE CACHE PRIORITY
ADJUST INDEX CACHE PRIORITY
ADJUST BLOBS CACHE PRIORITY

Internen Prioritätswert auslesen (nur zu Debugging-Zwecken)

Get adjusted table cache priority
Get adjusted index cache priority
Get adjusted blobs cache priority

beware Diese Befehle müssen mit Vorsicht verwendet werden, da sie die Leistung der Datenbank beeinträchtigen können.

Beispiele

In der On Startup Datenbankmethode wollen Sie eine hohe Priorität für die [Customer]LastName Feldindizes setzen:
SET INDEX CACHE PRIORITY([Kunde]Nachname;Cache-Priorität sehr hoch)

Sie möchten die Cache-Priorität für die in der Datendatei gespeicherten [Docs] table Textfelder vorübergehend ändern, wenn Sie eine sequentielle Suche durchführen:
ADJUST BLOBS CACHE PRIORITY([Docs];Cache-Priorität sehr hoch)
QUERY ([Docs];[Docs]Author#"A@") // sequentielle Suche auf einem nicht indizierten Feld
// mehrere andere Abfragen oder Aufträge auf derselben Tabelle ausführen
// nach Abschluss wieder auf normale Cache-Priorität setzen
ADJUST BLOBS CACHE PRIORITY ([Docs];Cache-Priorität normal)

Weitere Einzelheiten finden Sie in dem folgenden Artikel der Dokumentation 4D v16 R2.