Udostępnij za pośrednictwem


Zalecenia dotyczące optymalizowania wydajności danych

Dotyczy tego Power Platform zalecenia dotyczącego listy kontrolnej Well-Architected Performance Efficiency:

PE:08 Zoptymalizuj wydajność danych. Zoptymalizuj magazyny danych w celu ich zamierzonego i rzeczywistego użycia w obciążeniach.

W tym przewodniku opisano zalecenia dotyczące optymalizacji wydajności danych. Optymalizacja wydajności danych to precyzowanie wydajności, z którą obciążenie przetwarza i przechowuje dane. Każda operacja, transakcja lub wyniki obliczeń w ramach obciążenia zazwyczaj zależą od szybkiego i dokładnego pobrania, przetwarzania i przechowywania danych. Jeśli wydajność danych jest zoptyalizowana, obciążenie działa bez zakłóceń. Naruszona wydajność danych powoduje efekt domina w zakresie słabej wydajności. Niepowodzenie optymalizacji wydajności danych powoduje spóźnione odpowiedzi, większe opóźnienie i zredukowaną skalowalność. Wpływa to negatywnie na efektywność całego obciążenia.

Definicje

Termin Definicja
Magazyn danych Zasób przechowujący dane, taki jak baza danych, magazyn obiektów lub udział plików.
Index Struktura bazy danych zapewnia szybki dostęp do elementów.
Przetwarzanie analizy online (OLAP) Technologia, która organizuje duże bazy danych biznesowych, obsługuje złożone analizy i wykonuje złożone zapytania analityczne bez negatywnego wpływu na systemy transakcji.
Przetwarzanie transakcji online (OLTP) Technologia, która rejestruje interakcje biznesowe wykonywane w ciągu codziennych operacji w organizacji.
Partycjonowanie Proces fizycznego dzielenia danych na osobne magazyny danych.
Dostrajanie zapytań Proces, który optymalizuje szybkość zapytania bazy danych.

Kluczowe strategie projektowania

W celu zoptymalizowania użycia danych należy zapewnić, że magazyn danych jest zoptymalizowany pod kątem ich zamierzonego użycia i rzeczywistego użycia w obciążeniach. Zoptymalizowane użycie danych może poprawić wydajność zapytań, zmniejszyć zużycie zasobów i zwiększyć ogólną wydajność systemu. Rozważ poniższe strategie:

  • Profilowanie danych. Zrozum swoje dane i upewnij się, że model danych dobrze sprawdza się w przypadku obciążenia. Należy wziąć pod uwagę czynniki, takie jak normalizowanie danych i metody partycjonowania. Aby efektywnie pobierać dane, należy wybrać odpowiednie typy danych i zdefiniować relacje między tabelami.

  • Optymalizowanie wydajności zapytań. Analizu i optymalizuj zapytania uruchamiane w obciążeniach. Użyj technik, takich jak optymalizacja zapytań i buforowanie. Do wstępnego filtrowania danych należy użyć widoków po stronie serwera. Aby zidentyfikować wąskie gardła, należy użyć narzędzi do monitorowania wydajności i wprowadzić niezbędne usprawnienia.

  • Regularne monitorowanie i dostrajanie systemu. W sposób ciągły monitoruj wydajność obciążenia i iteruj różne ustawienia dotyczące konfiguracji magazynu danych oraz optymalizacji zapytań. Na podstawie najlepszych rozwiązań w zakresie dostrajania wydajności należy analizować metryki systemowe, określać obszary ulepszeń i implementować zmiany. W miarę wzrostu ilości danych może być konieczne zaktualizowanie zapytań, aby zachować wydajność.

Dane profilu

Profilowanie danych obejmuje przetwarzanie danych ze źródła i zbieranie informacji o nich. Celem jest zrozumienie jakości, struktury i charakterystyk danych w zakresie obciążenia. Ten proces umożliwia identyfikację problemów, takich jak brakujące wartości, duplikaty, niespójne formaty i inne anomalie.

W celu skutecznego profilowania danych warto rozważyć następujące strategie:

  • Zrozumienie struktury danych. Sprawdź strukturę danych, w tym tabele, kolumny i relacje. Określ typy danych, długości i ograniczenia stosowane dla poszczególnych kolumn. Ocena struktury danych pomaga zrozumieć, w jaki sposób dane są uporządkowane i jak są powiązane z innymi elementami danych.

  • Analizowanie woluminu danych. Oceniaj ilość danych, aby zrozumieć ogólny rozmiar i wzorce rozwoju. Określ liczbę rekordów lub dokumentów oraz rozmiar poszczególnych tabel lub kolekcji. Te informacje pomagają w szacowaniu wymagań dotyczących magazynu i identyfikowaniu problemów ze skalowalnością.

  • Identyfikowanie relacji danych. Poznaj relacje między elementami danych. Zrozum sposób połączenia danych w celu określenia sposobu, w jaki zmiany wprowadzone w jednej tabeli lub w jednym dokumencie mogą mieć wpływ na powiązane dane.

  • Ocena jakości danych. Oceń jakość danych, badając czynniki, takie jak kompletność, dokładność, spójność i unikatowość. Zidentyfikuj anomalie danych, brakujące wartości lub zduplikowane rekordy, które mogą mieć wpływ na spójność danych i wydajność zapytań. Ten krok pomaga w identyfikowaniu obszarów, w których można czyścić i poprawiać dane.

  • Przechwytywanie rozkładu danych. Przeanalizuj rozkład wartości w każdej kolumnie w celu określenia wzorców danych. Zidentyfikuj częste i rzadkie wartości, wartości odstające i niesymetryczności danych. Aby zoptymalizować wydajność zapytań, należy analizować, czy klucze alternatywne zapewniłyby lepszą wydajność.

Monitorowanie wydajności danych

Monitorowanie wydajności danych to spójne śledzenie efektywności magazynów danych. Obejmuje ono zebranie i analizowanie metryk wydajności specyficznych dla operacji danych przy użyciu narzędzi dostosowanych do rozwiązań do monitorowania na poziomie systemu, specyficznych dla bazy danych lub innych firm. Efektywne monitorowanie wydajności danych pozwala w sposób aktywny identyfikować i minimaliować potencjalne ograniczenia zagrożeń, zapewniając wydajność procesów i zadań związanych z danymi.

Aby monitorować wydajność danych, należy rozważyć następujące strategie:

  • Zbieranie metryk specyficznych dla danych. Zbieraj kluczowe metryki bezpośrednio związane z wydajnością danych. Metryki te obejmują czas odpowiedzi na zapytania i przepływność danych.

  • Skonfigurujalerty dotyczące danych. Skonfiguruj alerty specjalnie dla metryk danych. W celu wyzwolenia alertów użyj wstępnie zdefiniowanych progów lub anomalii w tych metrykach. Alerty umożliwiają otrzymanie powiadomień o przekroczeniu dopuszczalnych zakresów lub wyświetlą nietypowe zachowanie, na przykład jeśli zapytanie bazy danych trwa dłużej niż oczekiwano lub jeśli wydajność danych znacznie spadnie. Alerty te można skonfigurować, korzystając ze specjalistycznego narzędzia do monitorowania lub skryptów niestandardowych.

  • Diagnozowanie problemów z wydajnością danych. Regularnie przeglądaj zebrane metryki danych w celu zidentyfikowania potencjalnych wąskich gardeł wydajności lub obniżenia jakości operacji danych. Narzędzia i pulpity nawigacyjne do wizualizacji mogą być w tym procesie nieocenione, co pomaga wyróżnić trendy, wąskie gardła i wartości odstające wydajności danych. Po zidentyfikowaniu przyczyn głównych tych problemów zbadaj je i zaplanuj odpowiednie kroki naprawcze.

Partycjonowanie danych

Partycjonowanie obejmuje dzielenie dużych zestawów danych lub obciążeń o dużym wolumenie na mniejsze podzestawy, którymi można łatwo zarządzać. Partycjonowanie zwiększa skuteczność i wydajność danych przez dystrybucję obciążenia i usprawnianie przetwarzania równoległego. Zapewnia ono również bardziej efektywny dostęp do danych w zależności od konkretnych potrzeb i wzorców zapytania. Dane można podzielić na partycje poziomo lub poziomo (jest to również nazywane dzieleniem na fragmenty). Na przykład jeśli używasz tabel elastycznych Dataverse, zastanów się, co powino być klucze partycjonowania.

Strategia Definicja Przykład Przypadki użycia
Partycjonowanie pionowe Podziel tabelę na mniejsze tabele, wybierając odpowiednie kolumny lub pola dla każdej partycji. Każda partycja reprezentuje podzbiór pełnych danych. Jeśli masz tabelę z kolumnami A, B, C i D, możesz utworzyć jedną tabelę z kolumnami A i B i drugą z kolumnami C i D. - Tabela zawiera wiele kolumn, ale zapytania nie mają dostępu do wszystkich kolumn razem.
- Niektóre kolumny są większe niż inne i ich dzielenie może zwiększyć wydajność we/wy.
- Różne części danych mają różne wzorce dostępu.
Partycjonowanie poziome Podziel dane na podstawie wierszy lub zakresów wartości (jest to również nazywane dzieleniem na fragmenty). Każda partycja zawiera podzbiór wierszy o podobnej charakterystyce. Jeśli masz tabelę z wierszami od 1 do 1000, możesz utworzyć jedną partycję z wierszami od 1 do 500 i drugą z wierszami od 501 do 1000. - Zestaw danych jest zbyt duży dla jednej lokalizacji lub serwera.
- Dostęp do danych jest uzyskiwany na podstawie określonych zakresów lub filtrów.
- Konieczność dystrybucji obciążenia między węzły fizyczne i serwery w celu zwiększenia wydajności.

Aby podzielić dane na partycje, należy rozważyć następujące kroki:

  • Analizowanie danych i zapytań. Przeanalizuj dane i wzorce zapytań w celu zidentyfikowania odpowiednich strategii partycjonowania lub dzielenia na fragmenty. Zrozum rodzaj danych, wzorce dostępu i wymagania dotyczące rozkładu.

  • Określ klucz. Wybierz klucz partycjonowania lub fragmentowania, aby dystrybuować dane między partycjami lub elementami. Należy uważnie wybrać klucz, zależnie od charakterystyk danych i wymagań zapytania.

  • Określ logikę. Na podstawie wybranego klucza określ logikę partycjonowania lub fragmentowania. Należy rozważyć podzielenie danych na zakresy, stosowanie algorytmów skrótów lub użycie innych technik partycjonowania.

Optymalizowanie zapytań

Optymalizacja zapytań precyzuje zapytania, aby zmniejszyć liczbę zakwalifikowanych danych i zwróconych danych. Te dostosowania zwiększają wydajność i szybkość pobierania danych. W rezultacie praca bazy danych jest bardzo bezproblemowa, zasoby działają efektywniej, a użytkownicy mogą korzystać z bezproblemowych interakcji.

Aby zoptymalizować zapytania bazy danych, rozważ następujące strategie:

  • Ponowne napisanie zapytań. Przejrzyj i przeanalizuj złożone zapytania w celu zidentyfikowania szans ich ponownego napisania. Rozważ logikę zapytań opisowych, wyeliminowanie zbędnych operacji lub uproszczenie składni zapytań.

  • Unikanie problemu z zapytaniem N+1. Zminimalizuj liczbę rund w bazie danych, używając sprzężenia i pobierania wsadowego, aby efektywnie pobierać powiązane dane.

  • Zmiana kolejności sprzężeń. Oceń i rozważ ponowny układ sprzężenia w celu zminimalizowania liczby wierszy w każdej operacji sprzężenia. Kolejność dołączania tabel może mieć wpływ na wydajność zapytań.

  • Umieszczanie zapytań w pamięci podręcznej. Wyniki często uruchamianych zapytań można przechowywać w celu ich łatwego użycia. Umieszczanie zapytań w pamięci podręcznej eliminuje konieczność wielokrotnego uruchamiania tego samego zapytania i zmniejsza obciążenie przetwarzania zapytań.

  • Monitorowanie i dostrajanie. Monitoruj metryki wydajności zapytań, takie jak środowisko uruchomieniowe, wykorzystanie zasobów i wydajność zapytań. Użyj narzędzi do tworzenia profilów baz danych i monitorowania funkcji w celu zidentyfikowania zapytań o słabej wydajności. Te informacje mogą zoptymalizować wydajność zapytań.

Archiwizacja i usuwanie danych

Archiwizacja i usuwanie to strategie upraszczające przechowywanie danych. Archiwizacja przenosi starsze, rzadziej dostępne dane na wydajne miejsce do przechowywania danych. Usuwanie danych powoduje usunięcie zbędnych danych na stałe. Obie metody przyczyniają się do zwiększenia wydajności dzięki zmniejszaniu ilości danych, zwiększeniu szybkości dostępu do danych oraz skróceniu czasu wykonywania kopii zapasowych i odzyskiwania danych.

  • Zmniejszenie ilości danych: Mniej danych oznacza szybszy czas przetwarzania, zapewniając szybkie odpowiedzi na żądania użytkowników.
  • Zwiększenie szybkości dostępu do danych: Skrócony zestaw danych umożliwia szybsze wykonywanie zapytań i pobieranie danych, optymalizując czas reakcji systemu.
  • Skrócenie czasu tworzenia kopii zapasowych i odzyskiwania: mniejsze zestawy danych przyspieszają procesy tworzenia kopii zapasowych i przywracania, minimalizując przestoje i zapewniając stałą wydajność.

Archiwizacja i usuwanie mają kluczowe znaczenie w zapewnianiu szczytowej wydajności w systemach na podstawie danych.

Optymalizacja obciążenia magazynu

Optymalizacja obciążenia magazynu oznacza usprawnienie żądań w systemie przechowywania danych. Pomaga to wyeliminować zbędne żądania, zwiększyć pobieranie danych i uniknąć przeciążenia systemu przechowywania danych. Optymalizacja obciążenia magazynowego pozwala zagwarantować, że system przechowywania pozostanie dynamiczny podczas przechowywania żądań i zapewni szczytową wydajność. Należy wdrożyć strategie służące do ograniczenia obciążenia magazynu danych procesami przetwarzania. Aby zoptymalizować obciążenie magazyn danych, należy rozważyć następujące strategie.

Użycie buforowania

Funkcja buforowania przechowuje często używane dane w obszarze szybkiego dostępu, co umożliwia szybsze pobieranie danych niż pobieranie ich z głównego źródła. Ta metoda zwiększa wydajność danych, obcinając czasy dostępu i unikając wielokrotnego pobierania danych. Buforowanie poprawia szybkość odczytu i odpowiedź użytkowników, zwłaszcza w przypadku często używanych danych. Ta metoda jest najbardziej efektywna w przypadku danych statycznych lub danych, które decydują o zmianach.

Aby zapewnić optymalną wydajność pamięci podręcznej, należy rozważyć takie czynniki, jak zasady wygaśnięcia, strategii sprzedaży i zarządzanie rozmiarem pamięci podręcznej. W celu uzyskania optymalnej wydajności można dostosować ustawienia, takie jak czas wygaśnięcia. Aby użyć pamięci podręcznej w celu zoptymalizowania obciążenia magazynu, należy rozważyć następujące strategie:

  • Buforowanie w pamięci: Wykonaj buforowanie w pamięci, aby przechowywać często używane dane w pamięci w celu szybkiego pobierania. Tej techniki można użyć w przypadku danych aplikacji, które mają zostać obliczone lub pobrane z bazy danych. Buforowanie w pamięci jest przydatne w przypadku danych, które są często odczytywane, ale nie zmieniają się często. Na przykład zmiennych można używać w przepływach w chmurze lub zbiorach w aplikacjach kanw w celu buforowania danych.

  • Buforowanie zapytań bazy danych: Użyj tej techniki, aby buforować wyniki zapytań bazy danych, aby uniknąć wielokrotnego uruchamiania tego samego zapytania. Buforowanie zapytań bazy danych jest przydatne w przypadku złożonych i czasochłonnych zapytań bazy danych. W przypadku buforowania wyników zapytania kolejne żądania tego samego zapytania są zwracane szybko. Należy również rozważyć użycie widoków na serwerze, gdzie jest to możliwe, do wstępnego filtrowania danych w celu zawężenia danych istotnych dla zapytania.

  • Buforowanie sieci dostarczania zawartości: Ta technika służy do buforowania zawartości sieci Web na rozproszonych serwerach sieciowych w celu zmniejszenia opóźnień i usprawnienia dostarczania zawartości. Buforowanie sieci dostarczania zawartości jest skuteczne w przypadku zawartości statycznej, na przykład obrazów, plików CSS i plików JavaScript. Sieci dostarczania zawartości przechowują kopie zawartości w wielu miejscach na całym świecie, dzięki czemu użytkownicy mogą uzyskać dostęp do zawartości z serwera, który jest najbliższy ich regionu geograficznego.

Optymalizacja aktualizacji danych

Optymalizacja aktualizacji danych obejmuje ocenę aktualizacji wykonywanych w celu zapewnienia ich wydajności. Aktualizacje mogą mieć wpływ na wydajność większą niż inne operacje, ponieważ mogą wyzwalać niepotrzebną pracę i powodować konflikty zablokowania.

Aby ocenić sposób optymalizowania aktualizacji danych, należy rozważyć:

  • Zmiany danych. Optymalizowanie automatyzacji w celu użycia wstępnie obrazów danych lub filtrów w celu zminimalizowania pracy w momencie, gdy nie wystąpiła żadna rzeczywista zmiana. Należy unikać wyzwalania automatyzacji w przypadku niemodyfikowanych danych.

  • Automatyzacja. Oceń, kiedy i jak aktualizacje są wyzwalane na podstawie zmian danych, oraz optymalizuj wyzwalacze, aby dołączyć filtr. Na przykład aby wyzwolić automatyzację tylko wtedy, gdy zostanie zmodyfikowane określone pole źródła danych. Oceń aktualizacje, które wielokrotnie wyzwolą automatyzację. Zamiast tego należy rozważyć możliwość utworzenia operacji niestandardowej służącej do obsługi wszystkich operacji przetwarzania. Na przykład gdy w przypadku wysłania dostawy data dostawy i numer śledzenia zostaną zaktualizowane oddzielnie, można je zaktualizować jednocześnie w niestandardowej operacji "ShipOrder".

  • Zakleszczenia. Oceń powolne operacje aktualizacji, które mogą być przyczyną problemów z powodu wielu przepływów aktualizacji tych samych danych w różnych sekwencjach. Ta nieefektywność może powodować zablokowanie konfliktów lub nawet potencjalnych zakleszczeń, co spowoduje niepotrzebne ponowne przetworzenie. Zaktualizuj różne zasoby w tej samej kolejności, aby zminimalizować zawartość.

  • Aktualizacje zbiorcze. Jeśli operacje są uruchamiane dla wielu wierszy tabeli, należy rozważyć użycie operacji zbiorczych.

Optymalizacja przenoszenia i przetwarzania danych

Optymalizacja przenoszenia i przetwarzania danych obejmuje poprawienie efektywności i wydajności operacji związanych z ekstrakcją, transformacją, ładowaniem i przetwarzaniem danych. Należy wziąć pod uwagę następujące kluczowe aspekty optymalizacji przenoszenia i przetwarzania danych:

  • Optymalizacja wyodrębniania, przekształcania i ładowania (ETL): Zoptymalizuj procesy ETL, aby zminimalizować czas przetwarzania. Można usprawnić proces wyodrębniania, wdrożyć wydajne algorytmy transformacji i zoptymalizować proces ładowania. Jeśli poszczególne kroki staną się wydajniejsze, zoptymalizujesz cały przepływ pracy.

  • Przetwarzanie równoległe: Użyj technik przetwarzania równoległego, aby zwiększyć wydajność. Podczas dystrybuowania zadań przetwarzania danych w wielu wątkach i węzłach można równocześnie dzielić i przetwarzać obciążenia, co powoduje szybkie przetwarzanie.

  • Przetwarzanie wsadowe: grupowanie podobnych zadań w celu zmniejszenia obciążenia spowodowanego powtarzającymi się operacjami. Przetwarzanie wielu zadań w partii w celu skrócenia ogólnego czasu przetwarzania.

Projektowanie pod kątem bliskości danych

Bliskość danych dotyczy strategicznego rozmieszczenia danych w pobliżu użytkowników lub usług, które najczęściej mają do nich dostęp. Zmniejszenie odległości fizycznej lub logicznej między danymi a użytkownikami pozwala szybciej korzystać z danych i poprawić jakość danych. Aby zoptymalizować projekt w uzyskania bliskości, należy rozważyć następujące strategie:

  • Oceń wzorce dostępu do danych: Oceń wzorce dostępu obciążenia i często używane dane. Ta analiza może pomóc w określeniu miejsca, w którym mają zostać umieszczone dane, aby przynieść maksymalne korzyści.

  • Wybierz rozwiązania obsługujące relokację danych: Rozważ rozwiązania, które oferują dynamiczną relokację danych na podstawie zmieniających się wzorców dostępu, zapewniając optymalne pozycjonowanie danych.

  • Wybierz rozwiązania obsługujące synchronizację danych: Jeśli obsługujesz rozproszoną bazę użytkowników, wybierz rozwiązania, które umożliwiają synchronizację danych w różnych regionach, aby upewnić się, że repliki danych są dostępne w pobliżu użytkowników.

Kompromis: Jeśli dane bazowe często się zmieniają, zaimplementuj mechanizm unieważniania pamięci podręcznej, aby zapewnić, że dane w pamięci podręcznej pozostaną aktualne.

Ułatwienia Power Platform

Monitorowanie wydajności danych: Aby monitorować wydajność danych, rozważ użycie usługi Azure Monitor do zbierania i analizowania metryk infrastruktury, dzienników i danych aplikacji. Usługę Monitor można zintegrować z innymi usługami, np. Application Insights. Application Insights umożliwia monitorowanie wydajności aplikacji i obsługuje wiele platform.

Application Insights zbiera dane dotyczące użycia i wydajności. Usługa Log Analytics umożliwia korelowanie tych danych z danymi konfiguracji i wydajności w zasobach platformy Azure. Strumień danych Application Insights dla Dataverse dostarcza obecnie danych wydajnościowych związanych z połączeniami przychodzącymi API Dataverse, połączeniami wykonawczymi wtyczek Dataverse oraz połączeniami SDK Dataverse.

Optymalizowanie wzorców danych zapytań w aplikacjach kanwy: Postępuj zgodnie z udokumentowanymi wskazówkami i sugestiami. Zobacz Zoptymalizowane wzorce danych zapytań w Power Apps.

Zoptymalizuj sposób dostosowywania, rozszerzania lub integrowania z Dataverse: Postępuj zgodnie z udokumentowanymi najlepszymi praktykami i wskazówkami. Zobacz Sprawdzone metody postępowania i wskazówki dotyczące korzystania z Microsoft Dataverse.

Optymalizowanie zapytań bazy danych i wydajności indeksu: użyj funkcji szczegółowych informacji o wydajności zapytań Azure SQL Database, aby zoptymalizować zapytania, tabele i bazy danych. Tej funkcji można również używać do identyfikowania i rozwiązywania problemów z wydajnością zapytań.

W przypadku relacyjnych baz danych należy postępować zgodnie z wytycznymi dotyczącymi projektowania indeksu, wytycznymi dotyczącymi indeksu SQL Server i wytycznymi dotyczącymi indeksu Azure Cosmos DB. Za pomocą SQL Database można automatycznie dostrajać zapytania w celu poprawienia ich wydajności.

W przypadku baz danych SQL Database należy regularnie reorganizować i przebudowywać indeksy. Należy identyfikować powolne zapytania i dostrajać je, aby poprawić wydajność. Wiele aparatów bazy danych ma funkcje dostrajania zapytań. Aby uzyskać więcej informacji, należy zapoznać się z najlepszymi rozwiązaniami w zakresie wydajności zapytań.

Platforma Azure Cosmos DB ma domyślne zasady indeksowania, które indeksuje każdą właściwość każdego elementu i wymusza indeksy zakresu dla dowolnego ciągu tekstowego lub numeru. Takie zasady zapewniają efektywną wydajność zapytań i nie trzeba z wyprzedzeniem zarządzać indeksami.

Optymalizuj obciążenie magazynu: wiele usług baz danych platformy Azure obsługuje repliki do odczytu. Dostępność i konfiguracja repliki do odczytu różnią się w zależności od usługi bazy danych Azure. Szczegółowe informacje i opcje można znaleźć w oficjalnej dokumentacji dotyczącej poszczególnych usług.

Lista kontrolna efektywności wydajności

Zapoznaj się z kompletną zestawem zaleceń.