Zum Inhalt springen

Jitterbit App Builder – Leistungsoptimierung

Einführung

Leistungsoptimierung ist ein Prozess zur Identifizierung und Behebung von Engpässen, beginnend mit Optimierungen auf App-Ebene, bevor man teurere Infrastrukturänderungen in Betracht zieht.

Diese Seite behandelt die wichtigsten Optimierungsbereiche: Probleme finden, Anwendungsdesign, Abfrageoptimierung und Infrastruktur.

Probleme finden

Um Leistungsprobleme zu beheben, müssen Sie diese zunächst finden. Mit diesen Tools können Sie Probleme diagnostizieren:

  • Browser-Entwicklertools: Die meisten Webbrowser verfügen über integrierte Entwicklertools, die Ihnen bei der Suche nach clientseitigen Problemen helfen können, z. B. langsame oder fehlgeschlagene Netzwerkanfragen. Weitere Informationen finden Sie unter Browser-Entwicklertools verwenden.

  • Datenbankspezifische Tools: In der Regel verfügt Ihr Datenbanksystem über Tools zur Analyse und Optimierung der Abfrageleistung. Sie können beispielsweise EXPLAIN ANALYZE in PostgreSQL oder den Database Engine Tuning Advisor in Microsoft SQL Server verwenden, um Abfrageausführungspläne zu überprüfen und Probleme zu identifizieren.

  • App Builder-Überwachung: App Builder verfügt über integrierte Überwachungs- und Datenbankprotokolle, die Einblicke in die Aktivitäten der Anwendung bieten können.

Optimierung auf Anwendungsebene

Dieser Abschnitt behandelt Optimierungen, die Sie in Ihrer App Builder-Anwendung und dem zugrunde liegenden Datenbankschema vornehmen können.

Indizes

In einer Datenbank verbessert ein Index die Abfrageleistung, indem er der Datenbank-Engine hilft, Daten schneller zu finden.

Sie sollten den SQL-Code Ihrer App überprüfen und sicherstellen, dass alle Spalten, die in WHERE-, ORDER BY- oder JOIN-Klauseln verwendet werden, ordnungsgemäß indiziert sind. Das Ziel besteht darin, genügend Indizes zu erstellen, um Ihre SELECT-Abfragen zu beschleunigen, ohne so viele zu erstellen, dass Sie UPDATE-, INSERT- oder DELETE-Operationen erheblich verlangsamen.

Hier sind die wichtigsten Punkte zu Indizes:

  • Lese- und Schreibvorgänge ausgleichen: Das Hinzufügen von Indizes beschleunigt Abfragen (Lesevorgänge), verlangsamt aber Datenänderungsanweisungen (INSERT/UPDATE/DELETE). Finden Sie ein Gleichgewicht, das für Ihre App funktioniert.

  • Indizierung für Sortierung und Gruppierung: Erwägen Sie die Indizierung von Spalten, die für die Sortierung (ORDER BY) und Gruppierung (GROUP BY) verwendet werden. Sie können auch von der Indizierung von Spalten profitieren, die in Aggregatfunktionen wie MIN(), MAX() und COUNT() verwendet werden.

  • Abdeckende Indizes: Ein „abdeckender Index" enthält alle Spalten, die für eine bestimmte Abfrage erforderlich sind. Dies kann sehr effizient sein, da die Datenbank die Abfrage nur mit dem Index beantworten kann, ohne die Tabellendaten selbst lesen zu müssen. Beim Erstellen eines abdeckenden Index sollten Sie Spalten, die in Gleichheitsvergleichen (=) verwendet werden, vor Spalten platzieren, die in Ungleichheitsvergleichen (z. B. > und <) verwendet werden.

  • Fehlende Indizes finden: Sie können datenbankspezifische Tools verwenden, um fehlende oder ungenutzte Indizes zu finden. (Beispiele mit SQL Server finden Sie unter Fehlende und ungenutzte Indizes in SQL Server finden.

Abfragen

Die folgenden Tipps können Ihre Abfrageleistung verbessern:

  • Schreiben Sie indexfreundliche WHERE-Klauseln: Vermeiden Sie die Verwendung von Funktionen auf indizierten Spalten, da dies verhindern kann, dass die Datenbank den Index verwendet. Beispiel:

    Diese Abfrage ist langsam, weil die LOWER()-Funktion verhindert, dass die Datenbank einen Index auf der FirstName-Spalte verwendet. Die Datenbank muss jede Zeile scannen.

    WHERE LOWER(FirstName) LIKE '%bob%'
    

    Diese Abfrage ist schnell, weil sie einen Index verwenden kann, um übereinstimmende Zeilen direkt zu finden.

    WHERE FirstName LIKE 'Bob%'
    
  • Wählen Sie nur erforderliche Spalten aus: Vermeiden Sie die Verwendung von SELECT *. Durch die Auswahl nur der Spalten, die Ihre Anwendung benötigt, reduzieren Sie die Menge der Daten, die verarbeitet und über das Netzwerk gesendet werden müssen. Dies ist besonders wichtig für Unterabfragen.

  • Vereinfachen Sie komplexe Logik: Überprüfen Sie und schreiben Sie Abfragen um, die zu komplex oder verschachtelt geworden sind. Verwenden Sie nach Möglichkeit Unterabfragen erneut oder unterteilen Sie komplexe Logik in kleinere, besser verwaltbare Teile.

Geschäftsobjekte

Geschäftsobjekte können manchmal zu Leistungsproblemen führen. Beachten Sie die folgenden Punkte bei der Analyse von Geschäftsobjekten auf vermutete Leistungsprobleme:

  • Datenladen: App Builder lädt alle Spalten aus einem Geschäftsobjekt, wenn das Panel eines der folgenden Elemente verwendet:

    • Bedingte Formatierung.

    • Ein Feld mit aktivierter Option Supports Substitution.

    • Beliebige nicht-statische Sichtbarkeitsregeln.

    Beachten Sie dieses Verhalten beim Entwerfen komplexer Panels.

  • Feldnutzung:

    • Vermeiden Sie, Binärfelder in ein Geschäftsobjekt einzubeziehen, es sei denn, das Feld wird von einem Panel verwendet (z. B. für einen Datei-Upload oder -Download).

    • Erwägen Sie, dedizierte Geschäftsobjekte zu erstellen, die nur Binärfelder für Panels enthalten, die diese speziell benötigen.

    • Stellen Sie sicher, dass Sie den richtigen Datentyp für Spalten verwenden. Verwenden Sie beispielsweise INT für Zahlen und TIMESTAMP für Daten statt VARCHAR oder TEXT. Dies reduziert die Speichergröße und verbessert die Abfragegeschwindigkeit.

  • UI-Auswirkungen: Auch wenn die Abfrage eines Geschäftsobjekts schnell ist, kann der Benutzer ein langsames App-Verhalten feststellen. Sie sollten auf andere Dinge prüfen, die die Geschwindigkeit beeinflussen könnten, z. B. komplexe Sortierregeln oder Listenfelder mit großen Anzahlen von Elementen.

Optimierung auf Infrastrukturebene

Wenn Sie Ihre Apps so weit wie möglich optimiert haben und dennoch eine bessere Leistung benötigen, können Sie ein Upgrade Ihrer Infrastruktur in Betracht ziehen. Hier sind die Optionen:

  • Horizontale Skalierung mit Lastverteilung: Mit zunehmender Anzahl von Benutzern kann ein einzelner Webserver möglicherweise die Last nicht bewältigen. Horizontale Skalierung bedeutet, weitere Webserver hinzuzufügen, um Anfragen zu verarbeiten, und einen Lastverteiler zu verwenden, um Anfragen gleichmäßig auf diese zu verteilen. Dies verbessert nicht nur die Leistung, sondern erhöht auch die Zuverlässigkeit, da der Datenverkehr umgeleitet werden kann, wenn ein Server ausfällt.

    Hinweis

    Auto-Scaling und Lastverteilung werden für alle Cloud-gehosteten Umgebungen empfohlen.

  • Datenbankenskalierung: Der Datenbankserver kann in Apps mit hohem Datenverkehr ein Leistungsengpass sein. Um Read-Heavy-Workloads zu bewältigen, können Sie Read Replicas erstellen. Dies sind sekundäre Datenbankinstanzen, die eine Kopie der Daten aus der primären Datenbank enthalten. Sie können Ihre App so konfigurieren, dass alle schreibgeschützten Abfragen an diese Replicas gesendet werden, sodass die primäre Datenbank frei ist, um Schreibvorgänge zu verarbeiten.

    Bei extrem großen Datenmengen können Sie Sharding in Betracht ziehen, bei dem eine Datenbank in kleinere Teile (Shards) partitioniert wird, die auf mehrere Server verteilt sind.

  • Caching-Schichten: Für Produktionsumgebungen sollten Sie ein dediziertes In-Memory-Caching-System verwenden, z. B. Redis oder Memcached. Diese Systeme speichern häufig abgerufene Daten im RAM und bieten viel schnellere Abrufzeiten als eine Datenbank. Wenn Ihre App Daten benötigt, prüft sie zunächst den Cache und fragt die Datenbank nur ab, wenn die Daten nicht gefunden werden. Dies kann die Last auf dem Datenbankserver erheblich reduzieren.

  • Ressourcenzuteilung und Überwachung: Um sicherzustellen, dass Ihre Server richtig dimensioniert sind, sollten Sie ihre Leistung aktiv überwachen. Verfolgen Sie Schlüsselmetriken wie CPU-Auslastung, Speicherverbrauch und Festplatten-E/A, um Engpässe zu identifizieren, bevor sie Benutzer beeinflussen.

    Sie sollten Ihre Server mit ausreichend CPU, RAM und schnellem Speicher (SSDs) bereitstellen, um Ihre erwartete Arbeitslast zu bewältigen. Vertikale Skalierung (Upgrade auf leistungsstärkere Hardware) kann eine vorübergehende Lösung sein, bevor horizontale Skalierung erforderlich wird.

Fehlerbehebung

Weitere Informationen zur Fehlerbehebung finden Sie in den folgenden Abschnitten im App Builder-Fehlerbehebungsleitfaden: