Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für diese Checkliste für azure Well-Architected Framework Performance Efficiency:
| PE:08 | Optimieren sie die Datenleistung. Optimieren Sie Datenspeicher, Partitionen und Indizes für ihre beabsichtigte und tatsächliche Verwendung in der Workload. |
|---|
In diesem Leitfaden werden die Empfehlungen zum Optimieren der Datenleistung beschrieben. Die Optimierung der Datenleistung geht es darum, die Effizienz zu verfeinern, mit der die Arbeitsauslastung verarbeitet und Daten speichert. Jeder Workloadvorgang, jede Transaktion oder Berechnung basiert in der Regel auf dem schnellen und genauen Abrufen, Verarbeiten und Speichern von Daten. Wenn die Datenleistung optimiert ist, wird die Workload reibungslos ausgeführt. Kompromittierte Datenleistung erzeugt einen Dominoeffekt schlechter Leistungsfähigkeit. Fehler beim Optimieren der Datenleistung führen zu Antwortverzögerungen, erhöhter Latenz und eingeschränkter Skalierbarkeit. Sie gefährdet die Effizienz der gesamten Arbeitsauslastung.
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 erläutern. |
| Neuerstellung des Datenbankindexes | Eine Wartungsaktivität, die einen Index abbricht 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. |
| Mögliche Konsistenz | Ein Datensynchronisierungsmodell, das temporäre Inkonsistenzen in Datenreplikaten ermöglicht, bevor sie schließlich synchronisiert werden. |
| Index | Eine Datenbankstruktur, die schnellen Zugriff auf Elemente ermöglicht. |
| Online Analytical Processing (OLAP) | Eine Technologie, die große Geschäftsdatenbanken organisiert, komplexe Analysen unterstützt und komplexe analysetechnische Abfragen durchführt, ohne dass sich dies negativ auf Transaktionssysteme auswirkt. |
| Onlinetransaktionsverarbeitung (OLTP) | Eine Technologie, mit der Geschäftsinteraktionen aufgezeichnet werden, während sie in täglichen Vorgängen einer Organisation auftreten. |
| Optimistische Parallelität | Ein Ansatz zum Aktualisieren von Datenbanken, die Momentaufnahmen verwenden, um Aktualisierungen anstelle herkömmlicher Sperrmechanismen vorzunehmen, die Leistung und Skalierbarkeit zu verbessern. |
| PACELC-Theorem | Ein Framework, das verwendet wird, um Partitionstoleranz, Verfügbarkeit, Konsistenz und Latenz zu berücksichtigen, um die Kompromisse bei der Datenkonsistenz zu erläutern. |
| Partitionierung | Der Vorgang 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. |
Um die Datennutzung zu optimieren, stellen Sie sicher, dass Datenspeicher, Partitionen und Indizes für ihre beabsichtigte Verwendung und für die tatsächliche Verwendung in einer Workload optimiert sind. Optimierte Datennutzung kann die Abfrageleistung verbessern, den Ressourcenverbrauch verringern und die Gesamtsystemeffizienz verbessern. Berücksichtigen Sie die folgenden Strategien:
Profildaten. Verstehen Sie Ihre Daten, und stellen Sie sicher, dass Ihr Datenmodell für Ihre Arbeitsauslastung gut 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 so, dass sie ihren Workloadanforderungen entspricht. 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 sie die Abfrageleistung. Analysieren und Optimieren von Abfragen, die in der Workload ausgeführt werden. Verwenden Sie Techniken wie Abfrageoptimierung, Indizierung und Zwischenspeicherung. Um Engpässe zu erkennen, verwenden Sie Abfragepläne und Leistungsüberwachungstools, und nehmen Sie dann die erforderlichen Verbesserungen vor.
Überwachen und optimieren Sie das System regelmäßig. Überwachen Sie kontinuierlich die Leistung Ihrer Workload und durchlaufen Sie die Datenspeicherkonfiguration und Abfrageoptimierungen. Basierend auf bewährten Methoden zur Leistungsoptimierung analysieren Sie Systemmetriken, identifizieren Sie Verbesserungsbereiche und implementieren Sie Änderungen.
Profilerstellungsdaten
Die Datenprofilerstellung umfasst das Untersuchen der Daten aus einer Quelle und das Sammeln von Informationen dazu. Ziel ist es, 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 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 Datenvolume. Bewerten Sie das Volumen Ihrer Daten, um die Gesamtgröße und die Wachstumsmuster zu verstehen. Bestimmen Sie die Anzahl der Datensätze oder Dokumente und die Größe einzelner Tabellen oder Auflistungen. Diese Informationen helfen Ihnen bei der Schätzung der Speicheranforderungen und beim Identifizieren von Skalierbarkeitsproblemen.
Identifizieren von Datenbeziehungen. Erkunden Sie die Beziehungen zwischen Datenelementen, z. B. Primär- und Fremdschlüsselbeziehungen. Verstehen, 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, Bereiche für die Datenbereinigung und -verbesserung zu identifizieren.
Erfassen Sie die Datenverteilung. Analysieren Sie die Verteilung von Werten innerhalb jeder Spalte, um Datenmuster zu bestimmen. Identifizieren Sie häufige und seltene Werte, Ausreißer und Datenverknungen. Um die Abfrageleistung zu optimieren, wählen Sie geeignete Indizierungsstrategien und Abfrageoptimierungstechniken basierend auf der Verteilung aus.
Überwachen der Datenleistung
Datenleistungsüberwachung ist die Praxis, die Effizienz von Datenspeichern, Partitionen und Indizes in Echtzeit konsistent zu verfolgen. Es umfasst das Sammeln und Analysieren von Leistungsmetriken, die für Datenvorgänge spezifisch sind, mithilfe von Tools, die auf Systemebene, datenbankspezifische oder Drittanbieterüberwachungslösungen zugeschnitten sind. Mithilfe einer effektiven Datenleistungsüberwachung können Sie potenzielle Engpässe proaktiv identifizieren und mindern, um sicherzustellen, dass datenbezogene Prozesse und Aufgaben effizient sind. Berücksichtigen Sie zum Überwachen der Datenleistung die folgenden Strategien:
Sammeln Sie datenspezifische Metriken. Sammeln Sie wichtige Metriken, die sich direkt auf die Datenleistung beziehen. Zu diesen Metriken gehören Abfrageantwortzeiten, Datendurchsatz, Datenträger-E/A im Zusammenhang mit dem Datenzugriff und die Ladezeiten bestimmter Datenpartitionen.
Einrichten von Datenwarnungen. Richten Sie Benachrichtigungen speziell für Datenmetriken ein. Verwenden Sie vordefinierte Schwellenwerte oder Anomalien in diesen Metriken, um Warnungen auszulösen. Mithilfe von Benachrichtigungen können Sie Benachrichtigungen empfangen, wenn Leistungsmetriken akzeptable Bereiche überschreiten oder ein ungewöhnliches Verhalten anzeigen. Wenn eine Datenbankabfrage beispielsweise länger als erwartet dauert oder wenn der Datendurchsatz erheblich abfällt, würde eine Warnung ausgelöst. Sie können diese Warnungen mit speziellen Überwachungstools oder benutzerdefinierten Skripts einrichten.
Diagnostizieren von Datenleistungsproblemen. Überprüfen Sie regelmäßig die gesammelten Datenmetriken, um potenzielle Leistungsengpässe oder Beeinträchtigungen in Datenvorgängen zu ermitteln. Visualisierungstools oder Dashboards können in diesem Prozess von unschätzbarem Wert sein, wodurch Trends, Engpässe und Ausreißer in der Datenleistung hervorgehoben werden können. Nachdem sie identifiziert wurden, tauchen Sie in die Ursachen dieser Probleme ein, und strategieren Sie die entsprechenden Korrekturschritte.
Partitionieren von Daten
Bei der Partitionierung werden große Datasets oder Workloads mit hohem Volumen in kleinere, verwaltbare Teilmengen aufgeteilt. Die Partitionierung verbessert die Effizienz der Datenleistung, indem die Workload verteilt und die parallele Verarbeitung 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 | Example | 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 einem anderen mit den Spalten C und D erstellen. | - Eine Tabelle enthält viele Spalten, aber Abfragen greifen nicht auf alle Spalten zu. - Einige Spalten sind größer als andere, und das Trennen kann die E/A-Leistung erhöhen. - Verschiedene Datenteile weisen unterschiedliche Zugriffsmuster auf. |
| Horizontale Partitionierung | Teilen 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 Zeilen 1 bis 1000 verfügen, erstellen Sie möglicherweise eine Partition mit Zeilen 1 bis 500 und einer mit Zeilen 501 bis 1000. | - Ein Dataset ist für einen einzelnen Speicherort oder Server zu groß. – Auf Daten wird basierend auf bestimmten Bereichen oder Filtern zugegriffen. – Die Workload muss auf physische Knoten oder Server verteilt werden, um die Leistung zu verbessern. |
Berücksichtigen Sie die folgenden Schritte, um Ihre Daten zu partitionieren:
Analysieren von Daten und Abfragen. Analysieren Sie Daten- und Abfragemuster, um geeignete Partitionierungs- oder Shardingstrategien zu identifizieren. Grundlegendes zur Art der Daten, Zugriffsmuster und Verteilungsanforderungen.
Bestimmen Sie einen Schlüssel. Wählen Sie einen Partitionierungs- oder Shardingschlüssel aus, um Daten über Partitionen oder Shards hinweg zu verteilen. Wählen Sie den Schlüssel sorgfältig basierend auf Datenmerkmalen und Abfrageanforderungen aus.
Bestimmen Der 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, um Partitionierung oder Sharding zu unterstützen. Erwägen Sie, die erforderliche Infrastruktur zu erstellen, die Partitionen oder Shards zu definieren und die Datenverteilung zu konfigurieren.
Weitere Informationen finden Sie unter Datenpartitionierungsleitfaden.
Optimieren von Datenbankabfragen
Durch das Optimieren von Datenbankabfragen werden Abfragen mithilfe von Techniken wie Indexhinweisen und Zwischenspeichern optimiert. Diese Anpassungen erhöhen die Effizienz und Geschwindigkeit des Datenabrufs. Daher hat die Datenbank eine leichtere Arbeitsauslastung, Ressourcen arbeiten effektiver, und Die Benutzer genießen reibungslosere Interaktionen. Um Datenbankabfragen zu optimieren, sollten Sie die folgenden Strategien berücksichtigen:
Schreiben Sie Abfragen neu. Überprüfen und analysieren Sie komplexe Abfragen, um Möglichkeiten zum Umschreiben zu identifizieren. Erwägen Sie die Umstrukturierungsabfragelogik, die Beseitigung redundanter Vorgänge oder das Vereinfachen der Abfragesyntax.
Vermeiden Sie das N+1-Abfrageproblem. Minimieren Sie die Anzahl der Roundtrips zur Datenbank, indem Sie Verknüpfungen und Batchabrufe verwenden, um verwandte Daten effizient abzurufen.
Ordnen Sie Verknüpfungen neu an. Bewerten Sie den Abfrageplan, und ziehen Sie die Neuanordnung der Verknüpfungsreihenfolge 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 ein Datenbankmodul die Verwendung von Indizes angeben kann, wenn eine Abfrage ausgeführt wird. Indexhinweise leiten den Optimierer, um die am besten geeigneten Indizes auszuwählen.
Cacheabfragen. Speichern Sie die Ergebnisse häufig ausgeführter Abfragen im Arbeitsspeicher. Die Abfragezwischenspeicherung beseitigt die Notwendigkeit, wiederholt dieselbe Abfrage auszuführen, und verringert den Verarbeitungsaufwand der Abfrage.
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 vom Datenbanksystem bereitgestellt werden. Analysieren und Anpassen von Isolationsebenen zum Ausgleich der Datenkonsistenz und Abfrageleistung.
Überwachen und Optimieren. Überwachen Sie Abfrageleistungsmetriken, z. B. Laufzeit, Ressourcenauslastung und Abfragedurchsatz. Verwenden Sie Datenbankprofilerstellungstools und Überwachungsfunktionen, um schlecht ausgeführte Abfragen zu identifizieren. Bewerten und Optimieren von Abfrageplänen basierend auf gesammelten Leistungsdaten. Analysieren Sie Abfragepläne, und warten Sie Statistiken, um Engpässe zu identifizieren. Verwenden Sie diese Informationen, um die Abfrageleistung zu optimieren.
Optimieren der Indexleistung
Indizes verbessern die Datenempfangsgeschwindigkeit, indem Datenbanken Daten mithilfe bestimmter Spalten oder Felder schnell finden können. 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 Datenträger-E/A-Vorgänge. Durch das Entfernen nicht benötigter oder redundanter Indizes werden auch wertvollen Speicherplatz freigegeben. Um die Indexleistung zu optimieren, berücksichtigen Sie die folgenden Strategien:
Analysieren Sie Abfragemuster. Grundlegendes zu den Abfragemustern, die in Ihrer Datenbank ausgeführt werden. Identifizieren Sie die Abfragen, die häufig ausgeführt werden, und beeinträchtigen Sie möglicherweise die Leistung. Analysieren Sie Abfragemuster, um zu bestimmen, welche Indizes für die Optimierung der Leistung von Vorteil sind.
Auswerten vorhandener Indizes. Überprüfen Sie die vorhandenen Indizes in Ihrer Datenbank. Bewerten Deren Verwendung, 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 sie Spalten für die Indizierung. Identifizieren Sie Spalten, die häufig in der Position, Verknüpfung und Reihenfolge nach Klauseln Ihrer Abfragen verwendet werden. Diese Spalten sind potenzielle Kandidaten für die Indizierung, da sie schnelle Datenabrufe ermöglichen können.
Wählen Sie einen geeigneten Indextyp aus. Wählen Sie einen geeigneten Indextyp basierend auf Ihrem Datenbanksystem aus. Allgemeine Optionen umfassen 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.
Erwägen 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 am häufigsten in Abfragen am Anfang des Indexes verwendet werden. Durch die Spaltenreihenfolge wird sichergestellt, dass Ihre Arbeitsauslastung effektiv Indizes für eine vielzahl von Abfragen verwendet.
Saldoindexgröße. Vermeiden Sie das Erstellen von Indizes für Spalten mit niedriger Kardinalität oder Spalten mit einer niedrigen Anzahl unterschiedlicher Werte. Solche Indizes können ineffizient sein und die Größe Ihrer Datenbank erhöhen. Indexspalten mit hoher Selektivität.
Verwalten sie die Indexnutzung. Ü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 von Indizes, die nicht mehr von Vorteil sind. Indizes haben Wartungsaufwand. Da sich Daten ändern, können Indizes fragmentiert und sich auf die Leistung auswirken. Führen Sie regelmäßig Indexwartungsaufgaben aus, z. B. das Neuerstellen oder Neuorganisieren von Indizes, um eine optimale Leistung sicherzustellen.
Testen und Überprüfen. Bevor Sie Indizes in einer Produktionsumgebung überarbeiten, führen Sie gründliche Tests und Überprüfungen durch. Messen Sie den Leistungseffekt von Indexrevisionen mithilfe repräsentativer Workloads. Überprüfen Sie die Verbesserungen anhand vordefinierter Benchmarks.
Tradeoff: B-Strukturindizes haben möglicherweise einen hohen Speicheraufwand, und Abfragen mit exakter Übereinstimmung sind möglicherweise langsam. Hashindizes eignen sich nicht für Bereichsabfragen oder Vergleichsoperatoren. Volltextindizes weisen möglicherweise hohe Speicheranforderungen auf, und nichttextuelle Datenabfragen sind möglicherweise langsam.
Berücksichtigen der Datenkomprimierung
Die Datenkomprimierung ist der Prozess der Reduzierung der Datengröße, um Speicherplatz zu optimieren und die Arbeitsauslastungsleistung 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 reduzieren und die Datenzugriffszeiten zu verbessern. Wenn Sie Daten komprimieren, werden E/A-Vorgänge und Netzwerkbandbreitenanforderungen reduziert.
Verlustlose Komprimierung und Verlustkomprimierung sind Datenkomprimierungsalgorithmen. Verlustlose Komprimierungsalgorithmen reduzieren die Datengröße, ohne dass Informationen verloren gehen. Verlustkomprimierungsalgorithmen 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.
Archiven und Löschen von Daten
Archivierung und Bereinigung sind Strategien, die die Datenspeicherung optimieren. Durch die Archivierung werden ältere, weniger häufig verwendete Daten in einen kostengünstigeren Speicher verschoben. Durch das Löschen von Daten werden redundante Daten dauerhaft entfernt. Sie tragen zur Leistungseffizienz bei, indem sie das Datenvolumen reduzieren, die Datenzugriffsgeschwindigkeit erhöhen und Sicherungs- und Wiederherstellungszeiten reduzieren:
Reduzierung des Datenvolumens: Weniger Daten bedeuten schnellere Verarbeitungszeiten, wodurch schnelle Antworten auf Benutzeranforderungen sichergestellt werden.
Erhöhung der Datenzugriffsgeschwindigkeit: Ein gekürztes Dataset ermöglicht schnellere Abfragen und Datenabrufe, wodurch die Reaktionsfähigkeit des Systems optimiert wird.
Reduzierung der Sicherungs- und Wiederherstellungszeiten: Kleinere Datasets beschleunigen Sicherungs- und Wiederherstellungsprozesse, minimieren Ausfallzeiten und sorgen für eine konsistente Leistung.
Archivierung und Bereinigung sind entscheidend für die Aufrechterhaltung der Spitzenleistungseffizienz in datengesteuerten Systemen.
Optimieren der Speicherlast
Das Optimieren der Speicherlast bedeutet das Optimieren von Anforderungen an das Speichersystem. Dadurch werden unnötige Anforderungen beseitigt. Außerdem wird der Datenabruf verbessert und verhindert, dass der Speicher überwältigend ist. Durch die Optimierung der Speicherlast wird sichergestellt, dass das Speichersystem auf legitime Anforderungen reagiert und Spitzenleistung aufrecht erhält. Implementieren Sie Strategien, um den Verarbeitungsaufwand für den Datenspeicher zu verringern. Um die Auslastung des Datenspeichers zu optimieren, sollten Sie die folgenden Strategien berücksichtigen:
Zwischenspeichern verwenden
Zwischenspeichern von häufig aufgerufenen Daten in einem Schnellzugriffsspeicherbereich, wodurch der Datenempfang schneller als das Abrufen von Daten aus der Hauptquelle erfolgt. Diese Technik erhöht die Datenleistung, indem die Zugriffszeiten gekürzt und wiederholte Datenabrufe vermieden werden. Zwischenspeichern verbessert Lesegeschwindigkeiten und Benutzerantwortzeiten, insbesondere für häufig verwendete Daten Diese Methode ist am effektivsten für statische Daten oder Daten, die sich selten ändern.
Um eine optimale Cacheeffizienz zu gewährleisten, berücksichtigen Sie Faktoren wie Ablaufrichtlinien, Zwängestrategien und Verwalten der Cachegröße. Passen Sie Einstellungen an, z. B. die Zeit für live (TTL), um eine optimale Leistung zu erzielen. Wenn Sie einen Cache verwenden möchten, um die Speicherlast zu optimieren, sollten Sie die folgenden Strategien berücksichtigen:
Zwischenspeicherung im Arbeitsspeicher: Führen Sie die Zwischenspeicherung im Arbeitsspeicher durch, um häufig verwendete Daten im Arbeitsspeicher zu speichern, um schnell abzurufen. Sie können diese Technik für Anwendungsdaten verwenden, die teuer zum Berechnen oder Abrufen aus einer Datenbank sind. Das Zwischenspeichern 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 die Ausführung derselben Abfrage mehrmals zu vermeiden. Die Zwischenspeicherung 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.
Zwischenspeicherung des Inhaltsübermittlungsnetzwerks: Verwenden Sie dieses Verfahren, um Webinhalte auf verteilten Netzwerkservern zwischenzuspeichern, um die Latenz zu reduzieren und die Inhaltsübermittlung zu verbessern. Das Zwischenspeichern des Inhaltsübermittlungsnetzwerks ist effektiv für statische Inhalte wie Bilder, CSS-Dateien und JavaScript-Dateien. Content Delivery Networks speichern Kopien von Inhalten an mehreren Standorten weltweit, sodass Benutzer auf den Inhalt von einem Server zugreifen können, der ihnen geografisch nahe liegt.
Verwenden von Lesereplikaten
Viele Datenbanken unterstützen mehrere Lesereplikate. Verteilen Sie Leseabfragen über Replikate hinweg, um den Bedarf an der Schreibdatenbank zu minimieren. Jedes Lesereplikat kann einer Teilmenge des Datenverkehrs dienen, wodurch die Leistung verbessert werden kann.
Wenn Sie über eine Workload mit mehreren Datenreplikaten verfügen, die Sie erwarten, dass sie synchronisiert bleiben, ist es hilfreich, dieses verteilte System mithilfe des PACELC-Theorems zu modellieren. Der PACELC-Theorem hilft Ihnen, die Latenz im Vergleich zu den Vergleichskonstanzmöglichkeiten im nicht partitionierten Zustand des Systems zu verstehen. Verwenden Sie diese Informationen, um Ihnen bei der Auswahl einer Datenbankmodul- und Datensynchronisierungsstrategie zu helfen, die das System am besten in einem partitionierten und nicht partitionierten Zustand adressiert. Weitere Informationen finden Sie unter Command and Query Responsibility Segregation (CQRS)-Muster.
Optimieren der Datenkonsistenz
In einer verteilten Workload, bei der sich Daten über mehrere Knoten oder Standorte befinden, bestimmt die von Ihnen ausgewählte Konsistenzstufe, wie schnell Änderungen an einem Ort in anderen vorkommen. Wenn Sie sich für eine strengere Konsistenz entscheiden, werden mehr Rechenressourcen verbraucht und können sich negativ auf die Leistungseffizienz auswirken. Andererseits führt eine weniger strenge Konsistenzstufe wie die spätere Konsistenz temporäre Inkonsistenzen zwischen Knoten ein, kann jedoch die Leistungseffizienz steigern.
Bei der späteren Konsistenz wird ein Gleichgewicht zwischen Datengenauigkeit und Arbeitsauslastungsleistung erzielt. Änderungen verbreiten sich schrittweise statt sofort, erhöhen die Reaktionsfähigkeit der Arbeitsauslastung und die Datenverarbeitungsgeschwindigkeit. Obwohl es kurzlebige Inkonsistenzen einführt, stellt die Workload schließlich konsistente Daten über alle Knoten hinweg dar. Durch die Auswahl der letztendlichen Konsistenz kann die Leistung einer Workload erhöht und die Verfügbarkeit und Skalierbarkeit weiter verbessert werden.
Optimieren von Datenaktualisierungen
Sie können optimistische Parallelität verwenden, um gleichzeitige Aktualisierungen derselben Daten zu behandeln. Anstatt Daten zu sperren und andere Updates zu verhindern, ermöglicht die optimistische Parallelität mehreren Benutzern oder Prozessen gleichzeitig zu arbeiten und davon aus, dass Konflikte selten sind.
Bei optimistischer Parallelität enthält jeder Aktualisierungsvorgang eine Version oder einen Zeitstempel, der den Status der Daten zum Zeitpunkt der Aktualisierung darstellt. Wenn ein konfliktierendes Update erkannt wird, löst das System den Konflikt durch Ablehnen des Updates oder Zusammenführen der Änderungen.
Optimistische Parallelität minimiert die Konsistenz und ermöglicht gleichzeitigen Updates den Vorgang ohne unnötige Sperrung. Sie reduziert die Wartezeit auf Ressourcen und bietet einen hohen Durchsatz.
Optimieren der Datenverschiebung und -verarbeitung
Die Optimierung der Datenverschiebung und -verarbeitung erfordert eine Verbesserung der Effizienz und Leistung von Vorgängen im Zusammenhang mit der Datenextraktion, Transformation, Ladevorgänge und Verarbeitung. Berücksichtigen Sie die folgenden wichtigen Aspekte der Optimierung der Datenverschiebung und -verarbeitung:
Extrahieren, Transformieren und Ladenoptimierung (ETL): Optimieren Sie ETL-Prozesse, um die Verarbeitungszeit zu minimieren. Sie können den Extraktionsprozess optimieren, effiziente Transformationsalgorithmen implementieren und den Ladevorgang optimieren. Wenn Sie jeden Schritt effizient machen, können Sie den gesamten Workflow optimieren.
Parallele Verarbeitung: Nutzen Sie parallele Verarbeitungstechniken, um die Leistung zu verbessern. Wenn Sie Datenverarbeitungsaufgaben über 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 zusammen, um den Aufwand zu reduzieren, der durch wiederholte Vorgänge verursacht wird. Verarbeiten mehrerer Aufgaben in einem Batch, um die Gesamtverarbeitungszeit zu reduzieren.
Optimieren des Speicherdesigns
Die Optimierung des Speicherdesigns erfordert die Erstellung einer präzisen Datenspeicherarchitektur und die Auswahl geeigneter Speichertechnologien. Ein optimiertes Speicherdesign verbessert den Datenzugriff, das Abrufen und die Manipulation. Durch das strategische Speicherdesign erzielt eine Workload verbesserte Reaktionszeiten und gesamter Funktionalität.
Entwurf für die Datennähe
Die Datennähe bezieht sich auf die strategische Platzierung von Daten näher an den Benutzern oder Diensten, die am häufigsten darauf zugreifen. Durch die Verringerung des physischen oder logischen Abstands zwischen Daten und den Benutzern sorgt die Datennähe für einen schnelleren Datenzugriff und eine verbesserte Reaktionsfähigkeit. Um das Design für die Nähe zu optimieren, sollten Sie die folgenden Strategien in Betracht ziehen:
Auswerten von Datenzugriffsmustern: Bewerten Sie die Zugriffsmuster Ihrer Workload und häufig verwendete Daten. Diese Analyse kann helfen, zu bestimmen, wo Daten für den maximalen Nutzen platziert werden sollen.
Wählen Sie Lösungen aus, 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 auf eine verteilte Benutzerbasis zugreifen, entscheiden Sie sich für Lösungen, die die Datensynchronisierung über verschiedene Regionen hinweg erleichtern, und stellen Sie sicher, dass Datenreplikate in der Nähe von Benutzern verfügbar sind.
Tradeoff: Wenn sich die zugrunde liegenden Daten häufig ändern, implementieren Sie einen Cache-Invalidationsmechanismus, um sicherzustellen, dass die zwischengespeicherten Daten auf dem neuesten Stand bleiben.
Verwenden der Polyglotpersistenz
Polyglot Persistenz ist die Praxis, mehrere Datenspeichertechnologien zum Speichern und Verwalten verschiedener Datentypen innerhalb einer Anwendung oder eines Systems zu verwenden. Verschiedene Arten von Datenbanken oder Speicherlösungen erfüllen unterschiedliche Datenanforderungen.
Polyglot Persistenz nutzt die Vorteile jeder Datenspeichertechnologie, um eine optimale Leistung und Skalierbarkeit für jeden Datentyp sicherzustellen. Sie können beispielsweise eine relationale Datenbank verwenden, um strukturierte transaktionsbezogene Daten zu speichern. Und Sie können 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. Bei relationalen Datenbanken können Sie normalisierte Tabellen mit entsprechenden Beziehungen erstellen. Bei NoSQL-Datenbanken können Sie Dokumentstrukturen oder Schlüsselwertpaare definieren. Entwickeln Sie die erforderlichen Komponenten für die Interaktion mit jeder Datenspeichertechnologie, z. B. APIs, Datenzugriffsebenen oder Datenintegrationspipelines. Stellen Sie sicher, dass die Anwendung Daten in die entsprechenden Datenspeicher lesen und schreiben kann.
Tradeoff: Eine Datenstruktur mit geringer Normalisierung kann die Leistung verbessern, aber Komplexitäten einführen.
Separate OLTP- und OLAP-Systeme
Um OLTP - und OLAP-Systeme zu trennen, entwerfen und stellen Sie unterschiedliche Systeme für Transaktionsverarbeitungs- und Analyseverarbeitungsaufgaben bereit. Diese Trennung ermöglicht es Ihnen, jedes System für seine spezifische Workload und Merkmale zu optimieren.
OLTP-Systeme werden für die Transaktionsverarbeitung in Echtzeit verwendet. Sie verarbeiten effizient und zuverlässig einzelne Transaktionen. OLTP-Systeme werden in der Regel verwendet, um täglich operative Aufgaben auszuführen, 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 verwendet. 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 zuordnen und jedes System für seine spezifische Arbeitsauslastung 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 verwenden möglicherweise denormalisierte Schemas oder Data Warehouse-Techniken, um die Abfrageleistung zu optimieren.
Azure-Erleichterung
Profilerstellungsdaten: Azure bietet Tools und Dienste, die Sie für Profildaten verwenden 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: Um die Datenleistung zu überwachen, 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 Anwendungsleistungsüberwachung und unterstützt viele Plattformen.
Application Insights sammelt Nutzungs- und Leistungsdaten. Sie können Log Analytics verwenden, um diese Daten mit Konfigurations- und Leistungsdaten in Azure-Ressourcen zu korrelieren.
Sie können das Insights-Feature von Azure SQL und Azure Cosmos DB verwenden, um Ihre Datenbank zu überwachen. Mit diesem Feature können Sie Probleme mit der Datenbankleistung diagnostizieren und optimieren.
Partitionierungsdaten: Azure bietet verschiedene Partitionierungsstrategien für verschiedene Datenspeicher. Jeder Datenspeicher hat möglicherweise unterschiedliche Überlegungen und Konfigurationsoptionen für die Datenpartitionierung. Weitere Informationen finden Sie unter Datenpartitionierungsstrategien.
Optimieren von Datenbankabfragen und Indexleistung: Verwenden Sie das Abfrageleistungs-Insights-Feature der Azure SQL-Datenbank, um Abfragen, Tabellen und Datenbanken zu optimieren. Sie können dieses Feature verwenden, um Abfrageleistungsprobleme zu identifizieren und zu beheben.
Für relationale Datenbanken sollten Sie die Indexentwurfsrichtlinien, SQL Server-Indexanleitungen und Azure Cosmos DB-Indexanleitungen befolgen. Verwenden Sie SQL-Datenbank, um die 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 Datenbankmodule verfügen über Abfrageoptimierungsfeatures. 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 eine beliebige Zeichenfolge oder Zahl erzwingt. Diese Richtlinie bietet Ihnen eine effiziente Abfrageleistung, und Sie müssen keine Indizes vorab verwalten.
Optimieren der Speicherlast: Viele Azure-Datenbankdienste unterstützen Lesereplikate. Die Verfügbarkeit und Konfiguration von Lesereplikaten variiert je nach Azure-Datenbankdienst. Lesen Sie die offizielle Dokumentation für jeden Dienst, um die Details und Optionen zu verstehen.
Optimieren des Speicherdesigns: Azure bietet viele verschiedene Datenspeicher für Ihre Workloadanforderungen. Grundlegendes zu Datentypen undAuswählen eines Azure-Datenspeichers für Ihre Anwendung.
Verwandte Links
- Automatische Optimierung in SQL-Datenbank
- Azure Cosmos DB
- Azure Cosmos DB-Indexleitfaden
- Azure SQL
- Bewährte Methoden für die Abfrageleistung
- CQRS-Muster
- Leitfaden zur Datenpartitionierung
- Strategien zur Datenpartitionierung
- Standardindizierungsrichtlinie
- Indexentwurfsleitfaden
- OLAP-Übersicht
- OLTP-Übersicht
- Bewährte Methoden für die Partitionierung
- Neuorganisieren oder Neuerstellen von Indizes
- Auswählen eines Azure-Datenspeichers für Ihre Anwendung
- SQL Server-Indexleitfaden
- Grundlegendes zu Datenspeichertypen
Prüfliste zur Leistungseffizienz
Lesen Sie den vollständigen Satz von Empfehlungen.