Wie vor ein paar Blogs versprochen, habe ich diesen Blog mit meinen Top 10 Tipps zur Leistungssteigerung von Mendix geschrieben. Dieser Blog ist technischer Natur und setzt Kenntnisse über den Mendix Modeler und etwas Infrastrukturwissen voraus, z.B. was ein Datenbankindex ist oder wie Webserver-Kompression hilft.
Diese Top 10 sind aus dem Stegreif und basieren auf meinen Erfahrungen. Ohne weitere Einleitung stelle ich Ihnen meine Liste vor:
#1. INDEXE ERSTELLEN
Ja, erstellen Sie wirklich Indizes. Sobald eine Entität (eine Tabelle oder mehrere Tabellen im Falle einer Vererbung) eine beträchtliche Menge an Daten enthält, werden Sie eine Leistungsverschlechterung feststellen. Finden Sie heraus, welche Suchvorgänge durchgeführt werden. Überprüfen Sie das Modell auf xpaths, die Attribute verwenden. Überprüfen Sie auch Ihre Suchformulare mit Grids.
#2. MINIMIEREN SIE DIE VERWENDUNG VON BERECHNETEN ATTRIBUTEN
Sie werden jedes Mal ausgeführt, wenn ein Datensatz geladen wird. Und viele Male, wenn das berechnete Attribut in einem Raster verwendet wird.
Wenn Sie sie verwenden, machen Sie sie schreibgeschützt aka ohne Seiteneffekte und machen Sie sie schnell!
#3. DATENVOLUMEN BEGRENZEN
Ein Grid lädt Chunks, daher kann eine kleinere Chuck-Größe die Leistung verbessern.
Überlegen Sie, welche Daten der Kunde benötigt. Mit Berechtigungen oder Modelldesign können Sie sicherstellen, dass nur ein minimaler Satz von Attributen an den Client gesendet wird. Dies gilt auch für die Komplexität des Formulars im Modellierer.
Das Laden von Dropdown-Verweisen kann sehr lange dauern. Das liegt zum einen an der Datenmenge und zum anderen an der Zeit, die die clientseitige JavaScript-Engine für den Aufbau des Menüs benötigt.
Archivieren Sie Daten, wenn Sie können.
#4. SCHLEIFEN IN SCHLEIFEN VERMEIDEN
Die Iterationen von Schleifen in Schleifen werden viele Male ausgeführt und viele kleine Teile ergeben ein langsames Puzzle.
Wenn Sie Schleifen in Schleifen nicht vermeiden können, versuchen Sie, die Anzahl der Iterationen zu minimieren, versuchen Sie, die Arbeit außerhalb der Schleifen zu erledigen, wo es möglich ist, versuchen Sie, Listen im Speicher statt Abfragen zu verwenden.
#5. COMMIT SO SPÄT WIE MÖGLICH
Dadurch wird verhindert, dass ein Datensatz gesperrt wird und andere Benutzer warten müssen.
Geplante Ereignisse oder Batch-Jobs sollten in kleinen Batches/Blöcken arbeiten. Andernfalls sperren sie Daten über einen langen Zeitraum hinweg.
#6. VERERBUNG VERMEIDEN
Mendix verwaltet separate Tabellen für jede vererbte Entität. Mendix hat eine separate Sicherheit für vererbte Entitäten, also seien Sie besonders vorsichtig mit xpath constraints auf Entitäten mit Vererbung und vielen Daten. Ich habe gesehen, dass die generierten SQL-Anweisungen von einer halben Seite bis zu 30 Seiten (A4) und die entsprechende Antwortzeit von unter 2 Sekunden bis zu über 30 Sekunden reichen.
#7. VERWENDEN SIE DIE MENDIX OPTIMIERUNG RETRIEVE+COUNT
Mendix optimiert einen Datenbankabruf gefolgt von einem Aggregat (Count), wenn die Liste, die aus dem Datenbankabruf resultiert, nicht anderweitig verwendet wird. So kann es manchmal hilfreich sein, zweimal abzurufen, da der erste Abruf optimiert ist und der zweite nur in bestimmten Geschäftsfällen ausgeführt wird.
#8. MINIMIERUNG DER VERWENDUNG VON REFERENZSETS
Mendix lädt die Daten von Referenzsets auch dann vor, wenn diese nicht benötigt werden. Ein Referenzset mit vielen Referenzen wird also jedes Mal geladen, wenn die Entität z.B. in einem Microflow geladen wird.
Minimieren Sie auch die Verwendung der Option "both" bei Referenzsets. Dies schafft das Problem auf 2 Seiten und diese Option wird fast nie benötigt.
#9. EINEN PROXY-WEBSERVER EINFÜHREN
Für Installationen vor Ort ist ein Webserver, der statische Inhalte ausliefert und die gesamte Kommunikation komprimiert, eine große Hilfe.
Für diejenigen in der Mendix Cloud: Sie haben Glück. Mendix hat dies bereits für Sie eingerichtet.
#10. SCHNELLERE HARDWARE VERWENDEN
Trivial, aber dennoch oft eine Option auf der Serverseite. Fügen Sie "AppEngines" in der Mendix-Cloud oder zusätzliche virtuelle Kapazitäten in Ihrem Rechenzentrum hinzu.
Mendix basiert auf einem JavaScript Framework und ein älterer Browser kann sehr langsam sein. Verwenden Sie also den bestmöglichen Browser. In der Vergangenheit hatten wir Google Frame unter IE6 oder IE7. Ich hoffe, diese Zeiten sind vorbei.
SCHLUSSFOLGERUNG
Ich hoffe, meine Liste hilft Ihnen, schnellere Anwendungen zu erstellen. Wenn Sie über den Inhalt diskutieren möchten oder dringend Hilfe bei Ihren Performance-Herausforderungen benötigen, können Sie mir gerne eine E-Mail schicken.
Die CLEVR Application Performance Management (APM) Suite kann Sie bei der Identifizierung von Performance-Problemen unterstützen, noch bevor diese durch Beschwerden von Endbenutzern auftreten. Mehr über die Anwendung dieser Toolsuite habe ich im Blog 'Just-in-Time Performance Management' geschrieben.