Zum Inhalt springen

Microsoft Dynamics AX – Record Caching

Dieser Beitrag beschäfigt sich dem Thema Caching von Tabellen im Dynamics AX.

1  Was ist Cache?

Cache bezeichnet in der EDV einen schnellen Puffer-Speicher, der (wiederholte) Zugriffe auf ein langsames Hintergrundmedium oder aufwendige Neuberechnungen zu vermeiden hilft.
Bereits einmal geladene oder generierte Daten, verbleiben im Cache, so dass sie bei späterem Bedarf schneller wieder abgerufen werden können. Auch können Daten, die vermutlich bald benötigt werden, vorab vom Hintergrundmedium abgerufen und vorerst im Cache bereitgestellt werden.
Quelle: Wikipedia.org

2 Record Caching

Microsoft Dynamics AX Datenbank Record Caching ist eine leistungssteigernde Funktion, unnötige Datenbankzugriffe können damit vermieden werden. 
Das Abrufen von Datensätzen aus dem Cache-Speicher anstelle der Datenbank beschleunigt den Datenbankzugriff deutlich. Mit Caching kann man Performance erhöhen, speziell wenn wiederholt auf die gleichen Datensätze zugegriffen wird. In Dynamics AX 2012 R3 gibt es über 9300 Tabellen und jede einzelne Tabelle kann mit der richtigen Cache-Strategie optimiert werden.

3 Arten von Caching

3.1 Single-record

«Single-record» Caching hat die folgenden Eigenschaften:

  • Definiert in der Design-Phase

  • Verschiebt Datensätze in den Cache basierend auf der Property «CacheLookup» oder von der verwendeten SELECT Typ Statement um den Datensatz abzurufen

  • Die Anzahl «Single-record» Cache ist im Client auf 100 Datensätze limitiert, Serverseitig ist das Limit auf 2000 Datensätze limitiert

  • Der Cache ist aktiviert, sofern die Methode disableCache nicht mit dem Parameter True aufgerufen wurde und die Property «CacheLookup» einen der folgenden Werte gesetzt wurde: NotInTTS, Found, FoundAndEmpty.

3.2 Set-based

«Set-based» Caching hat die folgenden Eigenschaften:

  • Definiert in der Design-Phase oder zur Laufzeit in X++ Code

  • Verschiebt Gruppen von Datensätzen in den Cache

  • Umgesetzt entweder durch die Tabelle der Property «CacheLookup» oder im Code durch die Verwendung von der Klasse RecordViewCache

3.3 EntireTable Caching

Wird die Property «CacheLookup» auf EntireTable gesetzt, werden beim ersten Zugriff alle Da-tensätze dieser Tabelle in den Cache platziert. Diese Art von Caching folgt den Regeln der «single-Record» Caching. Dies bedeutet, dass im SELECT Statment in der WHERE-Bedingung beinhalteten Feldern einen eindeutigen Index enthalten, die in der Property PrimaryIndex der Tabelle definiert wurde.

Bei grossen Tabellen sollte man nicht die EntireTable Caching aktivieren. Weil wenn der Cache-Speicher aufgebraucht ist, wird auf die langsame Festplatte ausgelagert, welche markant langsamer ist als der Cache-Speicher.

Die Limitte wann ein Cache ausgelagert werden soll, kann unter «Systemverwaltung», «Einstellungen», «System», «Serverkonfiguration» eingestellt werden. Im AX 2012 R3 ist die «Cachegrösse der gesamten Tabelle» mit der Defaultwert von 96 KB vordefiniert.

Vorher einlesen

Im Dynamics AX gibt es unter «Datei, «Extras», «Optionen», «Vorher einlesen» eine Auflistung aller Tabellen, welche Vorab eingelesen werden. Der AX-User kann grosse Tabellen deaktivieren, welche das Caching verlangsamen würden.

4 Zusammenfassung

Mit Caching wird die Performance von Dynamics AX markant gesteigert werden, sofern für alle Tabellen die richtige Cache-Strategie gewählt wurde. Bei einer falschen Dimensionierung wird jedoch der Cache vom schnellen Cache-Speicher auf den langsamen Festplattenspeicher ausgelagert, welcher die Performance deutlich verschlechert. Bei Performance-Problemen empfehlen wir eine Überprüfung Ihrer Cache-Einrichtung. Speziell bei der Parametrierung der Entire-Table Caching kann oft einiges optimiert werden.

Ausblick

In meinem nächsten Bog-Eintrag werde ich auf die neuen Features der Dynamics AX7 Entwicklung eingehen. Bis bald!


Standorte
Telefon: +41 844 844 120E-Mail:
Hauptsitz Boss Info AG Tannackerstr. 3 CH-4539 Farnern
Standort Aarburg Boss Info AG Paradieslistr. 4 CH-4663 Aarburg
Standort Ehrendingen Boss Info AG Böndlern 2 CH-5420 Ehrendingen
Standort Fällanden Boss Info AG Bruggacherstrasse 26 CH-8117 Fällanden
Standort Horw Boss Info AG Altsagenstrasse 1 CH-6048 Horw
Standort Langenthal Boss Info AG Gaswerkstrasse 27 CH-4900 Langenthal
Standort Münchenbuchsee Boss Info AG Talstrasse 3 CH-3053 Münchenbuchsee
Standort Sursee Boss Info AG Bahnhofstrasse 7a CH-6210 Sursee