Empfehlungen zum Optimieren der Datenleistung
Gilt für die folgende Checkliste zur Leistungseffizienz von Azure Well-Architected Framework:
PE:08 | Optimieren sie die Datenleistung. Optimieren Sie Datenspeicher, Partitionen und Indizes für die beabsichtigte und tatsächliche Verwendung in der Workload. |
---|
In diesem Leitfaden werden die Empfehlungen zum Optimieren der Datenleistung beschrieben. Bei der Optimierung der Datenleistung geht es darum, die Effizienz zu optimieren, mit der die Workload Daten verarbeitet und speichert. Jeder Workloadvorgang, jede Transaktion oder jede Berechnung basiert in der Regel auf dem schnellen und genauen Abrufen, Verarbeiten und Speichern von Daten. Wenn die Datenleistung optimiert wird, wird die Workload reibungslos ausgeführt. Eine kompromittierte Datenleistung erzeugt einen Dominoeffekt mit schlechter Leistungseffizienz. Fehler bei der Optimierung der Datenleistung führen zu Antwortverzögerungen, erhöhter Latenz und eingeschränkter Skalierbarkeit. Dies gefährdet die Effizienz der gesamten Workload.
Definitionen
Begriff | Definition |
---|---|
CAP-Theorem | Ein Framework, das verwendet wird, um Konsistenz, Verfügbarkeit und Partitionstoleranz zu berücksichtigen, um die Kompromisse bei der Datenkonsistenz zu erklären. |
Neuerstellung des Datenbankindexes | Eine Wartungsaktivität, die einen Index löscht und neu erstellt. |
Reorganisation des Datenbankindexes | Eine Wartungsaktivität, die den aktuellen Datenbankindex optimiert. |
Datenspeicher | Eine Ressource, die Daten wie eine Datenbank, einen Objektspeicher oder eine Dateifreigabe speichert. |
Letztliche Konsistenz | Ein Datensynchronisierungsmodell, das temporäre Inkonsistenzen in Datenreplikaten ermöglicht, bevor diese schließlich synchronisiert werden. |
Index | Eine Datenbankstruktur, die schnellen Zugriff auf Elemente ermöglicht. |
Analytische Onlineverarbeitung (Online Analytical Processing, OLAP) | Eine Technologie, die große Geschäftsdatenbanken organisiert, komplexe Analysen unterstützt und komplexe analytische Abfragen ohne negative Auswirkungen auf Transaktionssysteme ausführt. |
Onlinetransaktionsverarbeitung (OLTP) | Eine Technologie, die Geschäftsinteraktionen erfasst, wie sie im täglichen Betrieb eines organization auftreten. |
Optimistische Nebenläufigkeit | Ein Ansatz zum Aktualisieren von Datenbanken, bei dem Momentaufnahmen verwendet werden, um Updates anstelle herkömmlicher Sperrmechanismen zu erstellen, wodurch Leistung und Skalierbarkeit verbessert werden. |
PACELC-Theorem | Ein Framework, das verwendet wird, um Partitionstoleranz, Verfügbarkeit, Konsistenz und Latenz zu berücksichtigen, um die Kompromisse bei der Datenkonsistenz zu erklären. |
Partitionierung | Der Prozess der physischen Aufteilung von Daten in separate Datenspeicher. |
Abfrageoptimierung | Ein Prozess, der die Geschwindigkeit einer Datenbankabfrage optimiert. |
Lesereplikat | Eine Livekopie einer primären Datenbank, mit der Sie Lesedatenverkehr aus einer Schreibdatenbank auslagern können. |
Wichtige Entwurfsstrategien
Um die Datennutzung zu optimieren, stellen Sie sicher, dass Datenspeicher, Partitionen und Indizes für die beabsichtigte Verwendung und die tatsächliche Verwendung in einer Workload optimiert sind. Eine optimierte Datennutzung kann die Abfrageleistung verbessern, den Ressourcenverbrauch reduzieren und die Gesamteffizienz des Systems verbessern. Sehen Sie sich die folgenden Strategien an:
Profildaten. Verstehen Sie Ihre Daten, und stellen Sie sicher, dass Ihr Datenmodell gut für Ihre Workload geeignet ist. Berücksichtigen Sie Faktoren wie Datennormalisierung, Indizierungsstrategien und Partitionierungstechniken. Stellen Sie für einen effizienten Datenabruf sicher, dass Sie geeignete Datentypen auswählen, Beziehungen zwischen Entitäten definieren und eine optimale Indizierungsstrategie bestimmen.
Optimieren Sie Ihre Datenspeicherkonfiguration. Konfigurieren Sie Ihre Datenspeicherinfrastruktur entsprechend Ihren Workloadanforderungen. Wählen Sie eine geeignete Speichertechnologie aus, z. B. relationale Datenbanken, NoSQL-Datenbanken und Data Warehouses. Optimieren Sie Speichereinstellungen, z. B. Puffergröße, Zwischenspeicherungsmechanismen und Komprimierung.
Optimieren der Abfrageleistung Analysieren und optimieren Sie Abfragen, die in der Workload ausgeführt werden. Verwenden Sie Techniken wie Abfrageoptimierung, Indizierung und Zwischenspeicherung. Um Engpässe zu identifizieren, verwenden Sie Abfragepläne und Leistungsüberwachungstools, und nehmen Sie dann die erforderlichen Verbesserungen vor.
Regelmäßiges Überwachen und Optimieren des Systems. Überwachen Sie kontinuierlich die Leistung Ihrer Workload, und durchlaufen Sie die Datenspeicherkonfiguration und Abfrageoptimierungen. Basierend auf bewährten Methoden zur Leistungsoptimierung können Sie Systemmetriken analysieren, Verbesserungsbereiche identifizieren und Änderungen implementieren.
Profilerstellungsdaten
Die Datenprofilerstellung umfasst das Untersuchen der Daten aus einer Quelle und das Sammeln von Informationen darüber. Das Ziel besteht darin, die Qualität, Struktur und Merkmale von Workloaddaten zu verstehen. Dieser Prozess ermöglicht die Identifizierung von Problemen wie fehlenden Werten, Duplikaten, inkonsistenten Formaten und anderen Anomalien. Berücksichtigen Sie für eine effektive Datenprofilerstellung die folgenden Strategien:
Grundlegendes zur Datenstruktur. Untersuchen Sie die Struktur Ihrer Daten, einschließlich Tabellen, Spalten und Beziehungen. Bestimmen Sie die Datentypen, Längen und Einschränkungen, die auf jede Spalte angewendet werden. Die Datenstrukturauswertung hilft Ihnen zu verstehen, wie die Daten organisiert sind und wie sie sich auf andere Datenelemente beziehen.
Analysieren sie das Datenvolumen. Bewerten Sie das Volumen Ihrer Daten, um die Gesamtgröße und die Wachstumsmuster zu verstehen. Bestimmen Sie die Anzahl von Datensätzen oder Dokumenten und die Größe einzelner Tabellen oder Sammlungen. Diese Informationen helfen Ihnen, die Speicheranforderungen zu schätzen und Skalierbarkeitsprobleme zu identifizieren.
Identifizieren von Datenbeziehungen. Untersuchen Sie die Beziehungen zwischen Datenelementen, z. B. Primär- und Fremdschlüsselbeziehungen. Erfahren Sie, wie Daten verbunden sind, damit Sie bestimmen können, wie sich Änderungen in einer Tabelle oder einem Dokument auf verwandte Daten auswirken können.
Bewerten der Datenqualität. Bewerten Sie die Qualität Ihrer Daten, indem Sie Faktoren wie Vollständigkeit, Genauigkeit, Konsistenz und Eindeutigkeit untersuchen. Identifizieren Sie Datenanomalien, fehlende Werte oder doppelte Datensätze, die sich auf die Datenintegrität und Abfrageleistung auswirken können. Dieser Schritt hilft Ihnen dabei, Bereiche für die Datenbereinigung und -verbesserung zu identifizieren.
Erfassen der Datenverteilung. Analysieren Sie die Verteilung der Werte innerhalb jeder Spalte, um Datenmuster zu bestimmen. Identifizieren Sie häufige und seltene Werte, Ausreißer und Datenschiefe. Um die Abfrageleistung zu optimieren, wählen Sie basierend auf der Verteilung geeignete Indizierungsstrategien und Abfrageoptimierungstechniken aus.
Überwachen der Datenleistung
Bei der Datenleistungsüberwachung wird die Effizienz von Datenspeichern, Partitionen und Indizes in Echtzeit konsistent nachverfolgt. Dies umfasst das Sammeln und Analysieren von Leistungsmetriken, die speziell für Datenvorgänge gelten, wobei Tools verwendet werden, die auf Systemebene, datenbankspezifische Oder Drittanbieterüberwachungslösungen zugeschnitten sind. Eine effektive Datenleistungsüberwachung ermöglicht es Ihnen, potenzielle Engpässe proaktiv zu identifizieren und zu minimieren, um sicherzustellen, dass datenbezogene Prozesse und Aufgaben effizient sind. Berücksichtigen Sie die folgenden Strategien, um die Datenleistung zu überwachen:
Sammeln sie datenspezifische Metriken. Sammeln Sie wichtige Metriken, die sich direkt auf die Datenleistung beziehen. Diese Metriken umfassen Abfrageantwortzeiten, Datendurchsatz, Datenträger-E/A im Zusammenhang mit dem Datenzugriff und die Ladezeiten bestimmter Datenpartitionen.
Richten Sie Datenwarnungen ein. Richten Sie Warnungen speziell für Datenmetriken ein. Verwenden Sie vordefinierte Schwellenwerte oder Anomalien in diesen Metriken, um Warnungen auszulösen. Warnungen ermöglichen es Ihnen, Benachrichtigungen zu erhalten, wenn Leistungsmetriken akzeptable Bereiche überschreiten oder ungewöhnliches Verhalten zeigen. Wenn instance eine Datenbankabfrage länger dauert als erwartet oder wenn der Datendurchsatz erheblich abnimmt, wird eine Warnung ausgelöst. Sie können diese Warnungen mithilfe spezieller Überwachungstools oder benutzerdefinierter Skripts einrichten.
Diagnostizieren von Datenleistungsproblemen. Überprüfen Sie regelmäßig die gesammelten Datenmetriken, um potenzielle Leistungsengpässe oder Beeinträchtigungen bei Datenvorgängen zu ermitteln. Visualisierungstools oder Dashboards können in diesem Prozess von unschätzbarem Wert sein und dabei helfen, Trends, Engpässe und Ausreißer bei der Datenleistung hervorzuheben. Untersuchen Sie nach der Identifizierung die Grundursachen dieser Probleme, und erstellen Sie geeignete Schritte zur Behebung.
Partitionieren von Daten
Bei der Partitionierung werden große Datasets oder Workloads mit hohem Volumen in kleinere, verwaltbare Teilmengen unterteilt. Die Partitionierung verbessert die Effizienz der Datenleistung, indem die Workload verteilt und die Parallelverarbeitung verbessert wird. Außerdem wird ein effektiverer Datenzugriff basierend auf bestimmten Anforderungen und Abfragemustern sichergestellt. Sie können Daten vertikal oder horizontal partitionieren (auch als Sharding bezeichnet).
Strategie | Definition | Beispiel | Anwendungsfälle |
---|---|---|---|
Vertikale Partitionierung | Unterteilen Sie eine Tabelle in kleinere Tabellen, indem Sie bestimmte Spalten oder Felder für jede Partition auswählen. Jede Partition stellt eine Teilmenge der vollständigen Daten dar. | Wenn Sie über eine Tabelle mit den Spalten A, B, C und D verfügen, können Sie eine Tabelle mit den Spalten A und B und eine andere tabelle mit den Spalten C und D erstellen. | - Eine Tabelle enthält viele Spalten, aber Abfragen greifen nicht auf alle Spalten zusammen zu. - Einige Spalten sind größer als andere, und das Trennen kann die E/A-Leistung steigern. – Verschiedene Datenteile weisen unterschiedliche Zugriffsmuster auf. |
Horizontale Partitionierung | Aufteilen von Daten basierend auf Zeilen oder Wertenbereichen (auch als Sharding bezeichnet). Jede Partition enthält eine Teilmenge von Zeilen mit ähnlichen Merkmalen. | Wenn Sie über eine Tabelle mit den Zeilen 1 bis 1000 verfügen, können Sie eine Partition mit den Zeilen 1 bis 500 und eine andere mit den Zeilen 501 bis 1000 erstellen. | - Ein Dataset ist für einen einzelnen Standort oder Server zu groß. – Der Zugriff auf Daten erfolgt basierend auf bestimmten Bereichen oder Filtern. – Die Workload muss auf physische Knoten oder Server verteilt werden, um die Leistung zu verbessern. |
Gehen Sie wie folgt vor, um Ihre Daten zu partitionieren:
Analysieren von Daten und Abfragen. Analysieren von Daten und Abfragemustern, um geeignete Partitionierungs- oder Shardingstrategien zu identifizieren. Verstehen der Art der Daten, Zugriffsmuster und Verteilungsanforderungen.
Bestimmen Sie einen Schlüssel. Wählen Sie einen Partitionierungs- oder Shardingschlüssel aus, um Daten auf Partitionen oder Shards zu verteilen. Wählen Sie den Schlüssel sorgfältig basierend auf Datenmerkmalen und Abfrageanforderungen aus.
Bestimmen sie die Logik. Bestimmen Sie eine Partitionierungs- oder Shardinglogik basierend auf dem ausgewählten Schlüssel. Erwägen Sie, die Daten in Bereiche aufzuteilen, Hashingalgorithmen anzuwenden oder andere Partitionierungstechniken zu verwenden.
Konfigurieren Sie die Infrastruktur. Konfigurieren Sie das Datenbanksystem für die Unterstützung von Partitionierung oder Sharding. Erwägen Sie, die erforderliche Infrastruktur zu erstellen, die Partitionen oder Shards zu definieren und die Datenverteilung zu konfigurieren.
Weitere Informationen finden Sie unter Leitfaden Datenpartitionierung.
Optimieren von Datenbankabfragen
Durch die Optimierung von Datenbankabfragen werden Abfragen mithilfe von Techniken wie Indexhinweisen und Zwischenspeicherung optimiert. Diese Anpassungen erhöhen die Effizienz und Geschwindigkeit des Datenabrufs. Dies führt dazu, dass die Arbeitsauslastung der Datenbank geringer ist, Die Ressourcen effektiver funktionieren, und Die Benutzer genießen eine reibungslosere Interaktion. Berücksichtigen Sie die folgenden Strategien, um Datenbankabfragen zu optimieren:
Schreiben Sie Abfragen neu. Überprüfen und analysieren Sie komplexe Abfragen, um Möglichkeiten zu identifizieren, sie neu zu schreiben. Erwägen Sie eine Umstrukturierung der Abfragelogik, die Eliminierung redundanter Vorgänge oder die Vereinfachung der Abfragesyntax.
Vermeiden Sie das N+1-Abfrageproblem. Minimieren Sie die Anzahl von Roundtrips zur Datenbank, indem Sie Joins und Batchabrufe verwenden, um verwandte Daten effizient abzurufen.
Ordnen Sie Joins neu an. Bewerten Sie den Abfrageplan, und ziehen Sie eine Neuanordnung der Joinreihenfolge in Betracht, um die Anzahl der Zeilen in jedem Verknüpfungsvorgang zu minimieren. Die Reihenfolge, in der Tabellen verknüpft werden, kann sich auf die Abfrageleistung auswirken.
Verwenden Sie Indexhinweise. Verwenden Sie Indexhinweise, damit eine Datenbank-Engine die Verwendung von Indizes angeben kann, wenn eine Abfrage ausgeführt wird. Indexhinweise leiten den Optimierer an, die am besten geeigneten Indizes auszuwählen.
Cacheabfragen. Speichern Sie die Ergebnisse häufig ausgeführter Abfragen im Arbeitsspeicher. Das Zwischenspeichern von Abfragen entfällt die Notwendigkeit, dieselbe Abfrage wiederholt auszuführen, und reduziert den Mehraufwand für die Abfrageverarbeitung.
Optimieren sie die Sperrung. Vermeiden Sie unnötige oder restriktive Sperrhinweise in Abfragen. Effiziente Sperrstrategien können die Abfrageleistung und -parallelität verbessern. Wenden Sie optimierte Sperrmechanismen an, die das Datenbanksystem bereitstellt. Analysieren und Anpassen von Isolationsstufen, um Datenkonsistenz und Abfrageleistung auszugleichen.
Überwachen und Optimieren. Überwachen Sie Abfrageleistungsmetriken, z. B. Laufzeit, Ressourcennutzung und Abfragedurchsatz. Verwenden Sie Datenbankprofilerstellungstools und Überwachungsfunktionen, um Abfragen mit schlechter Leistung zu identifizieren. Bewerten und optimieren Sie Abfragepläne basierend auf gesammelten Leistungsdaten. Analysieren Sie Abfragepläne und Wartestatistiken, um Engpässe zu identifizieren. Verwenden Sie diese Informationen, um die Abfrageleistung zu optimieren.
Optimieren der Indexleistung
Indizes erhöhen die Geschwindigkeit des Datenabrufs, indem Sie Datenbanken das schnelle Auffinden von Daten mithilfe bestimmter Spalten oder Felder ermöglichen. Wenn Sie diese Indizes optimieren, werden Sortier- und Verknüpfungsvorgänge effizienter, was zu schnelleren Abfragen führt. Gut optimierte Indizes reduzieren die für Abfragen erforderlichen E/A-Vorgänge des Datenträgers. Das Entfernen nicht benötigter oder redundanter Indizes gibt auch wertvollen Speicherplatz frei. Berücksichtigen Sie die folgenden Strategien, um die Indexleistung zu optimieren:
Analysieren von Abfragemustern. Grundlegendes zu den Abfragemustern, die in Ihrer Datenbank ausgeführt werden. Identifizieren Sie die Abfragen, die häufig ausgeführt werden und möglicherweise die Leistung beeinträchtigen. Analysieren Sie Abfragemuster, um zu ermitteln, welche Indizes für die Leistungsoptimierung von Vorteil sind.
Auswerten vorhandener Indizes. Überprüfen Sie die vorhandenen Indizes in Ihrer Datenbank. Bewerten Deren Nutzung, Leistungseffekte und Relevanz für die Abfragemuster. Identifizieren Sie redundante oder nicht verwendete Indizes, die Sie entfernen können, um die Schreibleistung zu verbessern und den Speicheraufwand zu verringern.
Identifizieren von Spalten für die Indizierung. Identifizieren Sie Spalten, die häufig in den Where-, Join- und Order by-Klauseln Ihrer Abfragen verwendet werden. Diese Spalten sind potenzielle Kandidaten für die Indizierung, da sie einen schnellen Datenabruf ermöglichen können.
Wählen Sie einen geeigneten Indextyp aus. Wählen Sie einen geeigneten Indextyp basierend auf Ihrem Datenbanksystem aus. Häufige Optionen sind B-Strukturindizes für Gleichheits- und Bereichsabfragen, Hashindizes für genaue Übereinstimmungsabfragen und Volltextindizes für Textsuchvorgänge. Wählen Sie einen Indextyp aus, der Ihren Abfrageanforderungen am besten entspricht.
Berücksichtigen Sie die Indexspaltenreihenfolge. Wenn Sie zusammengesetzte Indizes oder Indizes mit mehreren Spalten erstellen, sollten Sie die Reihenfolge der Spalten berücksichtigen. Platzieren Sie die Spalten, die in Abfragen am häufigsten verwendet werden, am Anfang des Indexes. Die Spaltenreihenfolge trägt dazu bei, sicherzustellen, dass Ihre Workload effektiv Indizes für eine Vielzahl von Abfragen verwendet.
Indexgröße ausgleichen. Vermeiden Sie das Erstellen von Indizes für Spalten mit geringer Kardinalität oder Spalten mit einer geringen Anzahl unterschiedlicher Werte. Solche Indizes können ineffizient sein und die Größe Ihrer Datenbank erhöhen. Indizieren Sie stattdessen Spalten, die eine hohe Selektivität aufweisen.
Beibehalten der Indexverwendung. Überwachen Sie kontinuierlich die Nutzung und Leistung Ihrer Indizes. Suchen Sie nach Möglichkeiten, neue Indizes zu erstellen oder vorhandene Indizes basierend auf Änderungen in Abfragemustern oder Leistungsanforderungen zu ändern. Entfernen oder aktualisieren Sie Indizes, die nicht mehr von Vorteil sind. Indizes haben Wartungsaufwand. Bei Datenänderungen können Indizes die Leistung fragmentiert und beeinträchtigen. Führen Sie regelmäßig Indexwartungsaufgaben aus, z. B. neu erstellen oder neu organisieren, um eine optimale Leistung zu gewährleisten.
Testen und überprüfen. Führen Sie vor dem Überarbeiten von Indizes in einer Produktionsumgebung gründliche Tests und Validierungen durch. Messen Sie die Leistungswirkung von Indexrevisionen mithilfe repräsentativer Workloads. Überprüfen Sie die Verbesserungen anhand vordefinierter Benchmarks.
Kompromiss: B-Strukturindizes können einen hohen Speicheraufwand verursachen, und Abfragen mit exakter Übereinstimmung sind möglicherweise langsam. Hashindizes eignen sich nicht für Bereichsabfragen oder Vergleichsoperatoren. Volltextindizes haben möglicherweise hohe Speicheranforderungen, und nichttextuelle Datenabfragen sind möglicherweise langsam.
Datenkomprimierung berücksichtigen
Bei der Datenkomprimierung wird die Größe der Daten reduziert, um den Speicherplatz zu optimieren und die Effizienz der Workloadleistung zu verbessern. Komprimierte Daten benötigen weniger Speicherplatz und weniger Bandbreite für die Übertragung, was zu einer schnellen Datenübertragung führt. Sie würden Daten komprimieren, um den Speicherbedarf zu verringern und die Datenzugriffszeiten zu verbessern. Wenn Sie Daten komprimieren, werden E/A-Vorgänge und Netzwerkbandbreitenanforderungen reduziert.
Verlustfreie Komprimierung und verlustbehaftete Komprimierung sind Datenkomprimierungsalgorithmen. Verlustfreie Komprimierungsalgorithmen reduzieren die Größe von Daten, ohne Informationen zu verlieren. Verlustbehaftete Komprimierungsalgorithmen erzielen hohe Komprimierungsverhältnisse, indem weniger wichtige oder redundante Informationen entfernt werden.
Kompromiss: Zum Komprimieren und Dekomprimieren von Daten benötigen Sie Rechenressourcen wie CPU und Arbeitsspeicher. Je mehr Daten Sie komprimieren, desto mehr Ressourcen benötigen Sie.
Archivieren und Bereinigen von Daten
Archivierung und Bereinigung sind Strategien, die die Datenspeicherung optimieren. Bei der Archivierung werden ältere Daten, auf die weniger häufig zugegriffen wird, in einen kostengünstigeren Speicher verschoben. Durch das dauerhafte Löschen von Daten werden redundante Daten entfernt. Sie tragen zur Leistungseffizienz bei, indem sie das Datenvolumen reduzieren, die Datenzugriffsgeschwindigkeit erhöhen und die Sicherungs- und Wiederherstellungszeiten reduzieren:
Reduzieren des Datenvolumens: Weniger Daten bedeutet schnellere Verarbeitungszeiten und sorgt für schnelle Antworten auf Benutzeranforderungen.
Erhöhen der Datenzugriffsgeschwindigkeit: Ein gekürztes Dataset ermöglicht schnellere Abfragen und Datenabrufe, wodurch die Reaktionsfähigkeit des Systems optimiert wird.
Reduzieren von Sicherungs- und Wiederherstellungszeiten: Kleinere Datasets beschleunigen Sicherungs- und Wiederherstellungsprozesse, minimieren Ausfallzeiten und sorgen für konsistente Leistung.
Archivierung und Löschvorgänge sind entscheidend für die Aufrechterhaltung von Spitzenleistungseffizienz in datengesteuerten Systemen.
Optimieren der Speicherauslastung
Die Optimierung der Speicherlast bedeutet, Dass Anforderungen an das Speichersystem optimiert werden. Es hilft, unnötige Anforderungen zu vermeiden. Außerdem wird der Datenabruf verbessert und verhindert, dass der Speicher überlastet wird. Durch die Optimierung der Speicherlast wird sichergestellt, dass das Speichersystem weiterhin auf legitime Anforderungen reagiert und eine Spitzenleistung erhält. Implementieren Sie Strategien, um die Verarbeitungslast für den Datenspeicher zu verringern. Berücksichtigen Sie die folgenden Strategien, um die Auslastung des Datenspeichers zu optimieren:
Verwenden der Zwischenspeicherung
Beim Zwischenspeichern werden häufig zugegriffene Daten in einem Speicherbereich mit schnellem Zugriff gespeichert, sodass der Datenabruf schneller als das Pullen aus der Standard Quelle erfolgt. Dieses Verfahren erhöht die Datenleistung, indem die Zugriffszeiten verringert und wiederholte Datenabrufe vermieden werden. Zwischenspeicherung verbessert Lesegeschwindigkeiten und Benutzerantwortzeiten, insbesondere für Daten, auf die häufig zugegriffen wird. Diese Methode ist am effektivsten für statische Daten oder Daten, die sich selten ändern.
Berücksichtigen Sie Faktoren wie Ablaufrichtlinien, Räumungsstrategien und die Verwaltung der Cachegröße, um eine optimale Zwischenspeicherungseffizienz zu gewährleisten. Passen Sie Einstellungen wie die Laufzeit (Time to Live, TTL) an, um eine optimale Leistung zu erzielen. Um einen Cache zur Optimierung der Speicherauslastung zu verwenden, berücksichtigen Sie die folgenden Strategien:
In-Memory-Zwischenspeicherung: Führen Sie Die Zwischenspeicherung im Arbeitsspeicher durch, um häufig zugegriffene Daten im Speicher für einen schnellen Abruf zu speichern. Sie können diese Technik für Anwendungsdaten verwenden, die teuer zu berechnen oder aus einer Datenbank abzurufen sind. Die Zwischenspeicherung im Arbeitsspeicher ist nützlich für Daten, die Sie häufig lesen, aber nicht häufig ändern.
Zwischenspeichern von Datenbankabfragen: Verwenden Sie dieses Verfahren, um die Ergebnisse von Datenbankabfragen zwischenzuspeichern, um zu vermeiden, dass dieselbe Abfrage mehrmals ausgeführt wird. Das Zwischenspeichern von Datenbankabfragen ist für komplexe und zeitaufwendige Datenbankabfragen nützlich. Wenn Sie die Ergebnisse einer Abfrage zwischenspeichern, werden nachfolgende Anforderungen für dieselbe Abfrage schnell zurückgegeben.
Netzwerkzwischenspeicherung für die Inhaltsübermittlung: Verwenden Sie dieses Verfahren, um Webinhalte auf verteilten Netzwerkservern zwischenzuspeichern, um die Latenz zu verringern und die Inhaltsübermittlung zu verbessern. Das Zwischenspeichern des Inhaltsübermittlungsnetzwerks ist für statische Inhalte wie Bilder, CSS-Dateien und JavaScript-Dateien wirksam. Inhaltsbereitstellungsnetzwerke speichern Kopien von Inhalten an mehreren Standorten weltweit, sodass Benutzer von einem Server aus auf die Inhalte zugreifen können, der sich geografisch in ihrer Nähe befindet.
Verwenden von Lesereplikaten
Viele Datenbanken unterstützen mehrere Lesereplikate. Verteilen Sie Leseabfragen auf Replikate, um den Bedarf an der Schreibdatenbank zu minimieren. Jedes Lesereplikat kann eine Teilmenge des Datenverkehrs bereitstellen, was die Leistung verbessern kann.
Wenn Sie über eine Workload mit mehreren Datenreplikaten verfügen, von denen Sie erwarten, dass sie synchron bleiben, ist es hilfreich, dieses verteilte System mithilfe des PACELC-Satzes zu modellieren. Das PACELC-Theorem hilft Ihnen dabei, die Auswahl von Kompromissen zwischen Latenz und Konstanz im nicht partitionierten Zustand des Systems zu verstehen. Verwenden Sie diese Informationen, um eine Datenbank-Engine und eine Datensynchronisierungsstrategie auszuwählen, die das System in einem partitionierten und nicht partitionierten Zustand am besten adressiert. Weitere Informationen finden Sie unter CQRS-Muster (Command and Query Responsibility Segregation).
Optimieren der Datenkonsistenz
In einer verteilten Workload, bei der sich Daten über mehrere Knoten oder Standorte erstrecken, bestimmt die von Ihnen ausgewählte Konsistenzebene, wie schnell Änderungen an einem Standort in anderen widerspiegeln. Die Entscheidung für eine strengere Konsistenz verbraucht mehr Computeressourcen und kann sich negativ auf die Leistungseffizienz auswirken. Auf der anderen Seite führt eine weniger strenge Konsistenzebene wie die spätere Konsistenz zu temporären Inkonsistenzen zwischen Knoten, kann jedoch die Leistungseffizienz steigern.
Letztendliche Konsistenz schafft ein Gleichgewicht zwischen Datengenauigkeit und Workloadleistung. Änderungen verteilen sich schrittweise statt sofort, was die Reaktionsfähigkeit der Workload und die Geschwindigkeit der Datenverarbeitung erhöht. Obwohl es zu kurzlebigen Inkonsistenzen führt, stellt die Workload schließlich konsistente Daten auf allen Knoten dar. Die Auswahl der letztendlichen Konsistenz kann die Leistung einer Workload erhöhen und die Verfügbarkeit und Skalierbarkeit weiter verbessern.
Optimieren von Datenupdates
Sie können die optimistische Parallelität verwenden, um gleichzeitige Updates für dieselben Daten zu verarbeiten. Anstatt Daten zu sperren und andere Updates zu verhindern, ermöglicht die optimistische Parallelität es mehreren Benutzern oder Prozessen, gleichzeitig zu arbeiten, und setzt voraus, dass Konflikte selten sind.
Bei optimistischer Parallelität enthält jeder Aktualisierungsvorgang eine Version oder einen Zeitstempel, der den Status der Daten zum Zeitpunkt des Updates darstellt. Wenn ein in Konflikt stehendes Update erkannt wird, löst das System den Konflikt, indem das Update abgelehnt oder die Änderungen zusammengeführt werden.
Optimistische Parallelität minimiert Konflikte und ermöglicht es, gleichzeitige Updates ohne unnötige Sperren fortzusetzen. Es reduziert die Wartezeit für Ressourcen und bietet einen hohen Durchsatz.
Optimieren der Datenverschiebung und -verarbeitung
Die Optimierung der Datenverschiebung und -verarbeitung umfasst die Verbesserung der Effizienz und Leistung von Vorgängen im Zusammenhang mit der Datenextraktion, -transformation, -lade und -verarbeitung. Berücksichtigen Sie die folgenden wichtigen Aspekte der Optimierung der Datenverschiebung und -verarbeitung:
ETL-Optimierung (Extrahieren, Transformieren und Laden): Optimieren Sie ETL-Prozesse, um die Verarbeitungszeit zu minimieren. Sie können den Extraktionsprozess optimieren, effiziente Transformationsalgorithmen implementieren und den Ladeprozess optimieren. Wenn Sie jeden Schritt effizient gestalten, können Sie den gesamten Workflow optimieren.
Parallele Verarbeitung: Verwenden Sie parallele Verarbeitungstechniken, um die Leistung zu verbessern. Wenn Sie Datenverarbeitungsaufgaben auf mehrere Threads oder Knoten verteilen, können Sie die Workload gleichzeitig aufteilen und verarbeiten, was zu einer schnellen Verarbeitung führt.
Batchverarbeitung: Gruppieren Sie ähnliche Aufgaben, um den Aufwand zu reduzieren, der durch wiederholte Vorgänge verursacht wird. Verarbeiten Sie mehrere Aufgaben in einem Batch, um die Gesamtverarbeitungszeit zu verkürzen.
Optimieren des Speicherentwurfs
Die Optimierung des Speicherdesigns erfordert die Erstellung einer präzisen Datenspeicherarchitektur und die Auswahl geeigneter Speichertechnologien. Ein optimiertes Speicherdesign verbessert den Datenzugriff, den Abruf und die Bearbeitung. Durch den strategischen Speicherentwurf erreicht eine Workload verbesserte Antwortzeiten und die Gesamtfunktionalität.
Entwurf für Datennähe
Datennähe bezieht sich auf die strategische Platzierung von Daten, die näher bei den Benutzern oder Diensten sind, die am häufigsten darauf zugreifen. Durch die Verringerung des physischen oder logischen Abstands zwischen Daten und ihren Benutzern sorgt die Datennähe für einen schnelleren Datenzugriff und eine verbesserte Reaktionsfähigkeit. Um den Entwurf für die Nähe zu optimieren, ziehen Sie die folgenden Strategien in Betracht:
Datenzugriffsmuster auswerten: Bewerten Sie die Zugriffsmuster Ihrer Workload und die daten, auf die häufig zugegriffen wird. Diese Analyse kann helfen, zu bestimmen, wo Daten für den maximalen Nutzen platziert werden sollen.
Wählen Sie Lösungen, die die Datenverlagerung unterstützen: Ziehen Sie Lösungen in Betracht, die eine dynamische Datenverlagerung basierend auf sich ändernden Zugriffsmustern bieten, um eine optimale Datenpositionierung sicherzustellen.
Wählen Sie Lösungen aus, die die Datensynchronisierung unterstützen: Wenn Sie sich für eine verteilte Benutzerbasis entscheiden, entscheiden Sie sich für Lösungen, die die Datensynchronisierung in verschiedenen Regionen erleichtern, um sicherzustellen, dass Datenreplikate in der Nähe von Benutzern verfügbar sind.
Kompromiss: Wenn sich die zugrunde liegenden Daten häufig ändern, implementieren Sie einen Mechanismus für die Cacheinvalidierung, um sicherzustellen, dass die zwischengespeicherten Daten auf dem neuesten Stand bleiben.
Verwenden der polyglotigen Persistenz
Polyglot-Persistenz ist die Praxis der Verwendung mehrerer Datenspeichertechnologien zum Speichern und Verwalten verschiedener Arten von Daten in einer Anwendung oder einem System. Verschiedene Arten von Datenbanken oder Speicherlösungen erfüllen unterschiedliche Datenanforderungen.
Polyglotpersistenz nutzt die Vorteile jeder Datenspeichertechnologie, um eine optimale Leistung und Skalierbarkeit für jeden Datentyp zu gewährleisten. Beispielsweise können Sie eine relationale Datenbank verwenden, um strukturierte Transaktionsdaten zu speichern. Außerdem können Sie eine NoSQL-Datenbank verwenden, um unstrukturierte oder halbstrukturierte Daten zu speichern.
Entwerfen Sie ein Schema für jede Datenspeichertechnologie basierend auf den Anforderungen der Daten. Für relationale Datenbanken können Sie normalisierte Tabellen mit entsprechenden Beziehungen erstellen. Für NoSQL-Datenbanken können Sie Dokumentstrukturen oder Schlüssel-Wert-Paare definieren. Entwickeln Sie die erforderlichen Komponenten für die Interaktion mit den einzelnen Datenspeichertechnologien, z. B. APIs, Datenzugriffsebenen oder Datenintegrationspipelines. Stellen Sie sicher, dass die Anwendung Daten lesen und in die entsprechenden Datenspeicher schreiben kann.
Kompromiss: Eine Datenstruktur mit geringer Normalisierung kann die Leistung verbessern, aber zu Komplexitäten führen.
Getrennte OLTP- und OLAP-Systeme
Um OLTP - und OLAP-Systeme zu trennen, entwerfen und bereitstellen Sie verschiedene Systeme für Transaktionsverarbeitungs- und analytische Verarbeitungsaufgaben. Diese Trennung ermöglicht es Ihnen, jedes System für seine spezifische Workload und Merkmale zu optimieren.
OLTP-Systeme werden für die Echtzeittransaktionsverarbeitung verwendet. Sie wickeln einzelne Transaktionen effizient und zuverlässig ab. OLTP-Systeme werden in der Regel zur Ausführung täglicher operativer Aufgaben verwendet, z. B. Onlineauftragsverarbeitung, Bestandsverwaltung und Kundendatenverwaltung. OLTP-Systeme priorisieren Reaktionsfähigkeit, Konsistenz und Parallelität.
OLAP-Systeme werden für komplexe analytische Verarbeitung und Berichterstellung eingesetzt. Sie verarbeiten große Datenmengen und führen intensive Berechnungen und Aggregationen durch. OLAP-Systeme werden für Aufgaben wie Business Intelligence, Data Mining und Entscheidungsunterstützung verwendet. OLAP-Systeme priorisieren Abfrageleistung, Datenaggregation und mehrdimensionale Analyse.
Wenn Sie OLTP- und OLAP-Systeme trennen, können Sie geeignete Ressourcen zuweisen und jedes System für seine spezifische Workload optimieren. Die Trennung ermöglicht es Ihnen, unterschiedliche Datenmodellierungstechniken auf jedes System anzuwenden. OLTP-Systeme verwenden in der Regel normalisierte Schemas für eine effiziente Transaktionsverarbeitung. OLAP-Systeme können denormalisierte Schemas oder Data Warehousing-Techniken verwenden, um die Abfrageleistung zu optimieren.
Azure-Erleichterung
Profilerstellungsdaten: Azure bietet Tools und Dienste, mit denen Sie Daten profilieren können, z. B. Azure Data Catalog, Azure Purview und Azure Synapse Analytics. Mit diesen Tools können Sie Daten aus verschiedenen Quellen extrahieren, transformieren und laden, Datenqualitätsprüfungen durchführen und Einblicke in die Daten gewinnen.
Überwachen der Datenleistung: Zum Überwachen der Datenleistung können Sie Azure Monitor verwenden, um Infrastrukturmetriken, Protokolle und Anwendungsdaten zu sammeln und zu analysieren. Sie können Monitor in andere Dienste wie Application Insights integrieren. Application Insights bietet die Überwachung der Anwendungsleistung und unterstützt viele Plattformen.
Application Insights erfasst Nutzungs- und Leistungsdaten. Sie können Log Analytics verwenden, um diese Daten mit Konfigurations- und Leistungsdaten in Azure-Ressourcen zu korrelieren.
Sie können die Insights-Funktion von Azure SQL und Azure Cosmos DB verwenden, um Ihre Datenbank zu überwachen. Mit diesem Feature können Sie Datenbankleistungsprobleme diagnostizieren und optimieren.
Partitionierung von Daten: Azure bietet verschiedene Partitionierungsstrategien für verschiedene Datenspeicher. Jeder Datenspeicher kann unterschiedliche Überlegungen und Konfigurationsoptionen für die Datenpartitionierung aufweisen. Weitere Informationen finden Sie unter Strategien zur Datenpartitionierung.
Optimieren von Datenbankabfragen und Indexleistung: Verwenden Sie die Abfrageleistungs-Insight-Funktion von Azure SQL Database, um Abfragen, Tabellen und Datenbanken zu optimieren. Sie können dieses Feature verwenden, um Probleme mit der Abfrageleistung zu identifizieren und zu beheben.
Für relationale Datenbanken sollten Sie die Richtlinien für den Indexentwurf, SQL Server Indexleitfaden und azure Cosmos DB-Indexanweisungen befolgen. Verwenden Sie SQL-Datenbank, um eine automatische Optimierung für Abfragen durchzuführen, um ihre Leistung zu verbessern.
In SQL-Datenbanken sollten Sie Indizes regelmäßig neu organisieren oder neu erstellen. Identifizieren Sie langsame Abfragen, und optimieren Sie sie, um die Leistung zu verbessern. Viele Datenbank-Engines verfügen über Funktionen zur Abfrageoptimierung. Weitere Informationen finden Sie unter Bewährte Methoden für die Abfrageleistung.
Azure Cosmos DB verfügt über eine Standardindizierungsrichtlinie , die jede Eigenschaft jedes Elements indiziert und Bereichsindizes für jede Zeichenfolge oder Zahl erzwingt. Diese Richtlinie bietet Ihnen eine effiziente Abfrageleistung, und Sie müssen Indizes nicht im Voraus verwalten.
Optimieren der Speicherlast: Viele Azure-Datenbankdienste unterstützen Lesereplikate. Die Verfügbarkeit und Konfiguration von Lesereplikaten variieren je nach Azure-Datenbankdienst. Informationen zu den Details und Optionen finden Sie in der offiziellen Dokumentation für jeden Dienst.
Optimieren des Speicherentwurfs: Azure bietet viele verschiedene Datenspeicher, die Ihren Workloadanforderungen entsprechen. Grundlegendes zu Datenspeichertypen , und wählen Sie einen Azure-Datenspeicher für Ihre Anwendung aus.
Verwandte Links
- Automatische Optimierung in SQL-Datenbank
- Azure Cosmos DB
- Leitfaden zum Azure Cosmos DB-Index
- Azure SQL
- Bewährte Methoden für die Abfrageleistung
- CQRS-Muster
- Anleitungen zur Datenpartitionierung
- Strategien für die Datenpartitionierung
- Standardindizierungsrichtlinie
- Leitfaden zum Indexentwurf
- OLAP–Übersicht
- OLTP: Übersicht
- Best Practices für die Partitionierung
- Indizes neu organisieren oder neu erstellen
- Auswählen eines Azure-Datenspeichers für Ihre Anwendung
- SQL Server Indexleitfaden
- Grundlegendes zu Datenspeichertypen
Prüfliste zur Leistungseffizienz
Weitere Informationen finden Sie im vollständigen Satz von Empfehlungen.