Freigeben über


Verwendungsszenarien für den Abfragespeicher: Azure Database for PostgreSQL – Flexibler Server

GILT FÜR: Azure Database for PostgreSQL – Flexibler Server

Sie können den Abfragespeicher in verschiedenen Szenarios verwenden, in denen das Nachverfolgen und Verwalten der vorhersagbaren Leistung einer Workload von Bedeutung ist. Betrachten Sie die folgenden Beispiele:

  • Identifizieren und Optimieren besonders aufwendiger Abfragen
  • A/B-Tests zu instrumentieren.
  • Aufrechterhalten von stabiler Leistung bei Upgrades
  • Identifizieren und Verbessern von improvisierten Workloads

Erkennen und Optimieren von aufwendigen Abfragen

Erkennen von Abfragen mit der längsten Ausführungsdauer

Verwenden Sie Abfragespeicher Ansichten in der azure_sys Datenbank Ihres Servers, um schnell die Abfragen mit der längsten Ausführung zu identifizieren. Diese Abfragen beanspruchen in der Regel die meisten Ressourcen. Wenn Sie die Abfragen mit der längsten Ausführungsdauer optimieren, kann das die Leistung verbessern, da dadurch Ressourcen freigegeben werden, die dann von anderen Abfragen verwendet werden können, die auf dem System ausgeführt werden.

Identifizieren von Abfragen, die zu Leistungsabweichungen führen

Der Abfragespeicher teilt die Leistungsdaten in Zeitfenster auf, damit Sie die Leistung einer Abfrage im Zeitverlauf nachverfolgen können. Dadurch können Sie genau ermitteln, welche Abfragen dazu beitragen, dass insgesamt mehr Zeit für Abfragen aufgewendet wird. So können Sie gezielt Fehler Ihrer Workload beheben.

Optimieren aufwendiger Abfragen

Wenn Sie eine Abfrage mit nicht optimaler Leistung identifizieren, hängt die zu ergreifende Maßnahme vom Grund des Problems ab. Einige dieser Maßnahmen können folgende sein:

  • Vergewissern Sie sich, dass die Statistiken für die zugrunde liegenden Tabellen aktuell sind, die von der Abfrage verwendet werden.
  • Prüfen Sie, ob aufwendige Abfragen neu geschrieben werden müssen. Nutzen Sie beispielsweise die Abfrageparametrisierung, und verwenden Sie weniger dynamischen SQL-Code. Implementieren Sie eine geeignete Logik für das Lesen von Daten, z. B. Datenfiltern auf Datenbankseite anstatt auf Anwendungsseite.

A/B-Tests

Verwenden Sie den Abfragespeicher zum Vergleichen der Workloadleistung vor und nach einer Anwendungsänderung, die Sie vor oder nach einer Migration einführen möchten. Nachfolgend werden Beispielszenarios für die Verwendung des Abfragespeichers aufgeführt, um den Einfluss der Anwendung auf die Workloadleistung zu bewerten:

  • Migrieren zwischen Hauptversionen von PostgreSQL
  • Veröffentlichen einer neuen Anwendungsversion
  • Ändern der Ressourcenmenge, die dem Server gewährt wird
  • Ändern von Serverparametern, die sich auf das Verhalten des Servers auswirken
  • Erstellen von fehlenden Indizes in Tabellen, auf die von aufwendigen Abfragen verwiesen wird
  • Migrieren von Azure Database for PostgreSQL: Einzelserver zu Azure Database for PostgreSQL: Flexibler Server

Wenden Sie im Zusammenhang mit diesen Szenarios den folgenden Workflow an:

  1. Führen Sie vor der geplanten Änderung Ihre Workload mit dem Abfragespeicher aus, um eine Baseline für die Leistung zu generieren.
  2. Wenden Sie die gewünschten Änderungen zu einem kontrollierten Zeitpunkt an.
  3. Führen Sie die Workload so lange weiter aus, dass nach Anwendung der Änderungen ein Leistungsimage des Systems generiert werden kann.
  4. Vergleichen Sie die Ergebnisse von vor und nach der Änderung.
  5. Entscheiden Sie sich, ob die Änderungen beibehalten werden sollen, oder ob Sie ein Rollback ausführen möchten.

Identifizieren und Verbessern von improvisierten Workloads

Einige Workloads weisen keine besonders häufig ausgeführten Abfragen auf, die Sie zur Verbesserung der Gesamtleistung einer Anwendung optimieren können. Diese Workloads umfassen in der Regel eine große Anzahl an eindeutigen Abfragen, die jeweils einen gewissen Anteil der Systemressourcen verbrauchen. Die eindeutigen Abfragen werden in unregelmäßigen Abständen ausgeführt. Daher ist die Runtimenutzung der einzelnen Abfragen nicht kritisch. Ein erheblicher Anteil an Systemressourcen wird allerdings durch die Abfragekompilierung beansprucht, weil die Anwendung konstant immer neue Abfragen generiert. Dies stellt einen Nachteil dar. In der Regel kommt es zu diesem Szenario, wenn Ihre Anwendung Abfragen generiert, anstatt gespeicherte Prozeduren oder parametrisierte Abfragen zu verwenden, oder wenn diese von Frameworks für objektrelationale Zuordnungen abhängig sind, die standardmäßig Abfragen erstellen.

Wenn Sie die Möglichkeit haben, den Anwendungscode anzupassen, können Sie ggf. die Datenzugriffsebene neu schreiben, damit Sie gespeicherte Prozeduren und parametrisierte Abfragen verwenden können. Sie können aber auch verbessern, ohne Änderungen an der Anwendung vorzunehmen, indem Sie für die gesamte Datenbank bzw. für alle Abfragen oder für einzelne Abfragevorlagen mit einem Abfragehash die Parametrisierung erzwingen.

Nächster Schritt