Zalecenia dotyczące optymalizacji wydajności danych

Dotyczy tego zalecenia listy kontrolnej wydajności platformy Azure Well-Architected Framework:

PE:08 Optymalizowanie wydajności danych. Zoptymalizuj magazyny danych, partycje i indeksy pod kątem zamierzonego i rzeczywistego użycia w obciążeniu.

W tym przewodniku opisano zalecenia dotyczące optymalizacji wydajności danych. Optymalizacja wydajności danych polega na uściśliniu wydajności, za pomocą której obciążenie przetwarza i przechowuje dane. Każda operacja obciążenia, transakcja lub obliczenia zwykle opiera się na szybkim i dokładnym pobieraniu, przetwarzaniu i przechowywaniu danych. Gdy wydajność danych jest zoptymalizowana, obciążenie działa bezproblemowo. Naruszona wydajność danych tworzy efekt domina niskiej wydajności. Niepowodzenie optymalizacji wydajności danych powoduje opóźnienia odpowiedzi, zwiększone opóźnienie i ograniczenie skalowalności. Zagraża to wydajności całego obciążenia.

Definicje

Okres Definicja
Twierdzenie CAP Struktura używana do rozważenia spójności, dostępności i tolerancji partycji w celu wyjaśnienia kompromisów w spójności danych.
Ponowne kompilowanie indeksu bazy danych Działanie konserwacji, które usuwa i odtwarza indeks.
Reorganizacja indeksu bazy danych Działanie konserwacji, które optymalizuje bieżący indeks bazy danych.
Magazyn danych Zasób, który przechowuje dane, takie jak baza danych, magazyn obiektów lub udział plików.
Spójność ostateczna Model synchronizacji danych, który umożliwia tymczasową niespójność replik danych przed ich ostateczną synchronizacją.
Indeks Struktura bazy danych, która zapewnia szybki dostęp do elementów.
Przetwarzanie analityczne online (OLAP, Online Analytical Processing) Technologia, która organizuje duże bazy danych biznesowych, obsługuje złożoną analizę i wykonuje złożone zapytania analityczne bez negatywnego wpływu na systemy transakcyjne.
Przetwarzanie transakcji online (OLTP, Online Transaction Processing) Technologia, która rejestruje interakcje biznesowe w miarę ich występowania w codziennych operacjach organizacji.
Optymistyczna współbieżność Podejście do aktualizowania baz danych, które używają migawek do wprowadzania aktualizacji zamiast tradycyjnych mechanizmów blokowania, poprawy wydajności i skalowalności.
Twierdzenie PACELC Struktura używana do rozważenia tolerancji partycji, dostępności, spójności i opóźnień, aby ułatwić wyjaśnienie kompromisów w spójności danych.
Partycjonowanie Proces fizycznego dzielenia danych na oddzielne magazyny danych.
Dostrajanie zapytań Proces, który optymalizuje szybkość zapytania bazy danych.
Replika do odczytu Kopia na żywo podstawowej bazy danych, która umożliwia odciążanie ruchu odczytu z bazy danych zapisu.

Kluczowe strategie projektowania

Aby zoptymalizować użycie danych, upewnij się, że magazyny danych, partycje i indeksy są zoptymalizowane pod kątem ich zamierzonego użycia i rzeczywistego użycia w obciążeniu. Zoptymalizowane użycie danych może poprawić wydajność zapytań, zmniejszyć zużycie zasobów i zwiększyć ogólną wydajność systemu. Rozważ następujące strategie:

  • Profilowanie danych. Zapoznaj się z danymi i upewnij się, że model danych jest odpowiedni dla twojego obciążenia. Rozważ czynniki, takie jak normalizacja danych, strategie indeksowania i techniki partycjonowania. Aby zapewnić wydajne pobieranie danych, upewnij się, że wybrano odpowiednie typy danych, zdefiniuj relacje między jednostkami i określ optymalną strategię indeksowania.

  • Dostosuj konfigurację magazynu danych. Skonfiguruj infrastrukturę magazynu danych, aby dostosować się do wymagań dotyczących obciążenia. Wybierz odpowiednią technologię magazynowania, na przykład relacyjne bazy danych, bazy danych NoSQL i magazyny danych. Zoptymalizuj ustawienia magazynu, takie jak rozmiar buforu, mechanizmy buforowania i kompresja.

  • Optymalizowanie wydajności zapytań. Analizowanie i optymalizowanie zapytań uruchamianych w obciążeniu. Użyj technik, takich jak optymalizacja zapytań, indeksowanie i buforowanie. Aby zidentyfikować wąskie gardła, użyj planów zapytań i narzędzi do monitorowania wydajności, a następnie wprowadź niezbędne ulepszenia.

  • Regularnie monitoruj i dostrajaj system. Stale monitoruj wydajność obciążenia i iteruj konfigurację magazynu danych i optymalizacje zapytań. Na podstawie najlepszych rozwiązań dotyczących dostrajania wydajności przeanalizuj metryki systemu, zidentyfikuj obszary ulepszeń i zaimplementuj zmiany.

Profilowanie danych

Profilowanie danych obejmuje badanie danych ze źródła i zbieranie informacji o nim. Celem jest zrozumienie jakości, struktury i cech danych obciążenia. Ten proces umożliwia identyfikację problemów, takich jak brakujące wartości, duplikaty, niespójne formaty i inne anomalie. W celu efektywnego profilowania danych należy wziąć pod uwagę następujące strategie:

  • Omówienie struktury danych. Przeanalizuj strukturę danych, w tym tabele, kolumny i relacje. Określ typy danych, długości i ograniczenia, które są stosowane do każdej kolumny. Ocena struktury danych pomaga zrozumieć, jak dane są zorganizowane i jak są powiązane z innymi elementami danych.

  • Analizowanie woluminu danych. Oceń ilość danych, aby zrozumieć ogólny rozmiar i wzorce wzrostu. Określ liczbę rekordów lub dokumentów oraz rozmiar poszczególnych tabel lub kolekcji. Te informacje pomagają oszacować wymagania dotyczące magazynu i zidentyfikować problemy ze skalowalnością.

  • Identyfikowanie relacji danych. Zapoznaj się z relacjami między elementami danych, takimi jak relacje klucza podstawowego i obcego. Dowiedz się, jak dane są połączone, aby określić, jak zmiany w jednej tabeli lub dokumencie mogą mieć wpływ na powiązane dane.

  • Ocena jakości danych. Oceń jakość danych, sprawdzając czynniki, takie jak kompletność, dokładność, spójność i unikatowość. Identyfikowanie anomalii danych, brakujących wartości lub zduplikowanych rekordów, które mogą mieć wpływ na integralność danych i wydajność zapytań. Ten krok pomaga zidentyfikować obszary czyszczenia i ulepszania danych.

  • Przechwytywanie dystrybucji danych. Przeanalizuj rozkład wartości w każdej kolumnie, aby określić wzorce danych. Identyfikowanie częstych i rzadkich wartości, wartości odstających i niesymetryczności danych. Aby zoptymalizować wydajność zapytań, wybierz odpowiednie strategie indeksowania i techniki optymalizacji zapytań na podstawie dystrybucji.

Monitorowanie wydajności danych

Monitorowanie wydajności danych to praktyka spójnego śledzenia wydajności magazynów danych, partycji i indeksów w czasie rzeczywistym. Obejmuje to zbieranie 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. Skuteczne monitorowanie wydajności danych umożliwia proaktywne identyfikowanie i eliminowanie potencjalnych wąskich gardeł, dzięki czemu procesy i zadania związane z danymi są wydajne. Aby monitorować wydajność danych, należy wziąć pod uwagę następujące strategie:

  • Zbieranie metryk specyficznych dla danych. Zbierz kluczowe metryki, które bezpośrednio odnoszą się do wydajności danych. Metryki te obejmują czasy odpowiedzi na zapytania, przepływność danych, we/wy dysku związane z dostępem do danych oraz czasy ładowania określonych partycji danych.

  • Konfigurowanie alertów dotyczących danych. Skonfiguruj alerty specjalnie dla metryk danych. Użyj wstępnie zdefiniowanych progów lub anomalii w tych metrykach, aby wyzwolić alerty. Alerty umożliwiają otrzymywanie powiadomień, gdy metryki wydajności przekraczają dopuszczalne zakresy lub wykazują nietypowe zachowanie. Jeśli na przykład zapytanie bazy danych trwa dłużej niż oczekiwano lub jeśli przepływność danych znacznie spadnie, wyzwoli alert. Te alerty można skonfigurować przy użyciu wyspecjalizowanych narzędzi do monitorowania lub skryptów niestandardowych.

  • Diagnozowanie problemów z wydajnością danych. Regularnie przejrzyj zebrane metryki danych, aby wskazać potencjalne wąskie gardła wydajności lub obniżenie wydajności operacji danych. Narzędzia do wizualizacji lub pulpity nawigacyjne mogą być bezcenne w tym procesie, pomagając wyróżnić trendy, wąskie gardła i wartości odstające w wydajności danych. Po zidentyfikowaniu zapoznaj się z głównymi przyczynami tych problemów i strateguj odpowiednie kroki korygowania.

Partycjonowanie danych

Partycjonowanie obejmuje podzielenie dużych zestawów danych lub obciążeń o dużej ilości na mniejsze, możliwe do zarządzania podzestawy. Partycjonowanie zwiększa wydajność danych poprzez dystrybucję obciążenia i poprawę przetwarzania równoległego. Zapewnia również bardziej skuteczny dostęp do danych na podstawie konkretnych potrzeb i wzorców zapytań. Dane można partycjonować w pionie lub w poziomie (nazywane również fragmentowaniem).

Strategia Definicja Przykład Przypadki zastosowań
Partycjonowanie pionowe Podziel tabelę na mniejsze tabele, wybierając określone kolumny lub pola dla każdej partycji. Każda partycja reprezentuje podzestaw pełnych danych. Jeśli masz tabelę z kolumnami A, B, C i D, możesz utworzyć jedną tabelę z kolumnami A i B, a drugą z kolumnami C i D. — Tabela zawiera wiele kolumn, ale zapytania nie uzyskują dostępu do wszystkich kolumn razem.
— Niektóre kolumny są większe niż inne i oddzielanie ich może zwiększyć wydajność operacji we/wy.
— Różne części danych mają różne wzorce dostępu.
Partycjonowanie w poziomie Dzielenie danych na podstawie wierszy lub zakresów wartości (nazywanych również fragmentowaniem). Każda partycja zawiera podzestaw wierszy o podobnych cechach. Jeśli masz tabelę z wierszami od 1 do 1000, możesz utworzyć jedną partycję z wierszami od 1 do 500, a druga z wierszami 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.
— Należy rozłożyć obciążenie między węzłami fizycznymi lub serwerami w celu zwiększenia wydajności.

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

  • Analizowanie danych i zapytań. Analizowanie wzorców danych i zapytań w celu zidentyfikowania odpowiednich strategii partycjonowania lub fragmentowania. Poznaj charakter danych, wzorców dostępu i wymagań dotyczących dystrybucji.

  • Określanie klucza. Wybierz klucz partycjonowania lub fragmentowania, aby dystrybuować dane między partycjami lub fragmentami. Starannie wybierz klucz na podstawie właściwości danych i wymagań dotyczących zapytań.

  • Określanie logiki. Określ logikę partycjonowania lub fragmentowania na podstawie wybranego klucza. Rozważ podzielenie danych na zakresy, zastosowanie algorytmów tworzenia skrótów lub użycie innych technik partycjonowania.

  • Konfigurowanie infrastruktury. Skonfiguruj system bazy danych do obsługi partycjonowania lub fragmentowania. Rozważ utworzenie niezbędnej infrastruktury, zdefiniowanie partycji lub fragmentów oraz skonfigurowanie dystrybucji danych.

Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące partycjonowania danych.

Optymalizowanie zapytań bazy danych

Optymalizacja zapytań bazy danych uściśli zapytania przy użyciu technik takich wskazówek indeksu i buforowania. Te korekty zwiększają wydajność i szybkość pobierania danych. W związku z tym baza danych ma lżejsze obciążenie, zasoby działają wydajniej, a użytkownicy korzystają z bardziej płynnych interakcji. Aby zoptymalizować zapytania bazy danych, rozważ następujące strategie:

  • Ponowne zapisywanie zapytań. Przejrzyj i przeanalizuj złożone zapytania, aby zidentyfikować możliwości ponownego zapisywania ich. Rozważ restrukturyzację logiki zapytań, eliminowanie nadmiarowych operacji lub upraszczanie składni zapytań.

  • Unikaj problemu z zapytaniem N+1. Zminimalizuj liczbę pasków do bazy danych przy użyciu sprzężeń i pobierania wsadowego w celu wydajnego pobierania powiązanych danych.

  • Zmienia kolejność sprzężeń. Oceń plan zapytania i rozważ zmianę kolejności sprzężenia, aby zminimalizować liczbę wierszy w każdej operacji sprzężenia. Kolejność łączenia tabel może mieć wpływ na wydajność zapytań.

  • Użyj wskazówek dotyczących indeksu. Użyj wskazówek indeksu, aby aparat bazy danych mógł określić użycie indeksów podczas uruchamiania zapytania. Wskazówki dotyczące indeksu prowadzą optymalizator, aby wybrać najbardziej odpowiednie indeksy.

  • Zapytania pamięci podręcznej. Przechowuj wyniki często uruchamianych zapytań w pamięci. Buforowanie zapytań eliminuje konieczność wielokrotnego uruchamiania tego samego zapytania i zmniejsza obciążenie przetwarzania zapytań.

  • Optymalizowanie blokowania. Unikaj niepotrzebnych lub restrykcyjnych wskazówek dotyczących blokad w zapytaniach. Wydajne strategie blokowania mogą zwiększyć wydajność zapytań i współbieżność. Zastosuj zoptymalizowane mechanizmy blokowania zapewniane przez system bazy danych. Analizowanie i dostosowywanie poziomów izolacji w celu zrównoważenia spójności danych i wydajności zapytań.

  • Monitorowanie i dostrajanie. Monitoruj metryki wydajności zapytań, takie jak środowisko uruchomieniowe, wykorzystanie zasobów i przepływność zapytań. Użyj narzędzi profilowania bazy danych i funkcji monitorowania, aby zidentyfikować słabe wyniki zapytań. Ocenianie i dostosowywanie planów zapytań na podstawie zebranych danych wydajności. Przeanalizuj plany zapytań i statystyki oczekiwania, aby zidentyfikować wąskie gardła. Użyj tych informacji, aby zoptymalizować wydajność zapytań.

Optymalizowanie wydajności indeksu

Indeksy zwiększają szybkość pobierania danych, umożliwiając bazom danych szybkie znajdowanie danych przy użyciu określonych kolumn lub pól. Podczas optymalizowania tych indeksów operacje sortowania i sprzężenia stają się bardziej wydajne, co prowadzi do szybszego wykonywania zapytań. Dobrze zoptymalizowane indeksy wycinają operacje we/wy dysku wymagane dla zapytań. Usunięcie niepotrzebnych lub nadmiarowych indeksów zwalnia również cenne miejsce do magazynowania. Aby zoptymalizować wydajność indeksu, rozważ następujące strategie:

  • Analizowanie wzorców zapytań. Omówienie wzorców zapytań uruchamianych w bazie danych. Zidentyfikuj zapytania, które są często uruchamiane i mogą obniżyć wydajność. Analizowanie wzorców zapytań w celu określenia, które indeksy są korzystne dla optymalizacji wydajności.

  • Oceń istniejące indeksy. Przejrzyj istniejące indeksy w bazie danych. Oceń ich użycie, efekty wydajności i istotność wzorców zapytań. Zidentyfikuj nadmiarowe lub nieużywane indeksy, które można usunąć, aby zwiększyć wydajność zapisu i zmniejszyć obciążenie magazynu.

  • Zidentyfikuj kolumny do indeksowania. Zidentyfikuj kolumny, które są często używane w klauzulach where, join i order by zapytania. Te kolumny są potencjalnymi kandydatami do indeksowania, ponieważ umożliwiają szybkie pobieranie danych.

  • Wybierz odpowiedni typ indeksu. Wybierz odpowiedni typ indeksu na podstawie systemu bazy danych. Typowe opcje obejmują indeksy b-tree dla zapytań równości i zakresu, indeksy skrótów dla dokładnych zapytań dopasowania i indeksy pełnotekstowe dla operacji wyszukiwania tekstu. Wybierz typ indeksu, który najlepiej odpowiada wymaganiom zapytania.

  • Rozważ kolejność kolumn indeksu. Podczas tworzenia indeksów złożonych lub indeksów z wieloma kolumnami należy wziąć pod uwagę kolejność kolumn. Umieść kolumny, które są najczęściej używane w zapytaniach na początku indeksu. Kolejność kolumn pomaga upewnić się, że obciążenie efektywnie używa indeksów dla szerokiego zakresu zapytań.

  • Równoważenie rozmiaru indeksu. Unikaj tworzenia indeksów w kolumnach z niską kardynalnością lub kolumnami o niskiej liczbie unikatowych wartości. Takie indeksy mogą być nieefektywne i zwiększać rozmiar bazy danych. Zamiast tego kolumny indeksu, które mają wysoką selektorowość.

  • Zachowaj użycie indeksu. Stale monitoruj użycie i wydajność indeksów. Poszukaj możliwości utworzenia nowych indeksów lub zmodyfikowania istniejących indeksów na podstawie zmian w wzorcach zapytań lub wymaganiach dotyczących wydajności. Usuń lub zaktualizuj indeksy, które nie są już korzystne. Indeksy mają obciążenie związane z konserwacją. W miarę zmiany danych indeksy mogą fragmentować i wpływać na wydajność. Regularne wykonywanie zadań konserwacji indeksu, takich jak ponowne kompilowanie lub reorganizacja indeksów, w celu zapewnienia optymalnej wydajności.

  • Przetestuj i zweryfikuj. Przed poprawą indeksów w środowisku produkcyjnym należy przeprowadzić dokładne testowanie i walidację. Mierzenie wpływu wydajności poprawek indeksu przy użyciu reprezentatywnych obciążeń. Sprawdź ulepszenia wstępnie zdefiniowanych testów porównawczych.

Kompromis: indeksy B-tree mogą mieć duże obciążenie magazynu, a zapytania dotyczące dokładnego dopasowania mogą być powolne. Indeksy skrótów nie są odpowiednie dla zapytań zakresu ani operatorów porównania. Indeksy pełnotekstowe mogą mieć wysokie wymagania dotyczące magazynu, a zapytania dotyczące danych nietekstowych mogą być powolne.

Rozważ kompresję danych

Kompresja danych to proces zmniejszenia rozmiaru danych w celu zoptymalizowania miejsca do magazynowania i zwiększenia wydajności obciążenia. Skompresowane dane wymagają mniejszej ilości miejsca do magazynowania i mniejszej przepustowości do przesyłania, co skutkuje szybkim transferem danych. Kompresujesz dane, aby zmniejszyć ilość miejsca do magazynowania i poprawić czas dostępu do danych. Kompresowanie danych zmniejsza wymagania dotyczące operacji we/wy i przepustowości sieci.

Kompresja bez strat i kompresja strat to algorytmy kompresji danych. Algorytmy kompresji bez strat zmniejszają rozmiar danych bez utraty informacji. Algorytmy kompresji straty osiągają wysokie współczynniki kompresji, usuwając mniej ważne lub nadmiarowe informacje.

Kompromis: aby kompresować i dekompresować dane, potrzebne są zasoby obliczeniowe, takie jak procesor CPU i pamięć. Tym więcej danych kompresujesz, tym więcej potrzebnych zasobów.

Archiwizowanie i przeczyszczanie danych

Archiwizacja i przeczyszczanie to strategie usprawniające przechowywanie danych. Archiwizowanie przenosi starsze, rzadziej używane dane do bardziej ekonomicznego magazynu. Przeczyszczanie danych trwale usuwa nadmiarowe dane. Przyczyniają się one do wydajności dzięki zmniejszeniu ilości danych, zwiększeniu szybkości dostępu do danych oraz skróceniu czasu tworzenia kopii zapasowych i odzyskiwania:

  • Zmniejszenie ilości danych: mniejsze ilości danych oznaczają szybsze przetwarzanie, zapewniając szybkie odpowiedzi na żądania użytkowników.

  • Zwiększenie szybkości dostępu do danych: przycięty zestaw danych umożliwia szybsze wykonywanie zapytań i pobierania danych, optymalizowanie reakcji systemu.

  • Skrócenie czasu tworzenia kopii zapasowych i odzyskiwania: mniejsze zestawy danych przyspieszają procesy tworzenia i przywracania kopii zapasowych, minimalizując przestoje i zapewniając spójną wydajność.

Archiwizowanie i przeczyszczanie odgrywa kluczową rolę w zachowaniu szczytowej wydajności w systemach opartych na danych.

Optymalizowanie obciążenia magazynu

Optymalizacja obciążenia magazynu oznacza strumieniowe przesyłanie żądań do systemu magazynu. Pomaga wyeliminować niepotrzebne żądania. Zwiększa również pobieranie danych i zapobiega przeciążeniu magazynu. Optymalizacja obciążenia magazynu gwarantuje, że system magazynowania będzie reagować na uzasadnione żądania i utrzymuje szczytową wydajność. Zaimplementuj strategie, aby zmniejszyć obciążenie przetwarzania magazynu danych. Aby zoptymalizować obciążenie magazynu danych, rozważ następujące strategie:

Używanie buforowania

Magazyny buforowania często uzyskują dostęp do danych w obszarze magazynu szybkiego dostępu, dzięki czemu pobieranie danych jest szybsze niż ściąganie ich ze źródła głównego. Ta technika zwiększa wydajność danych, skracając czas dostępu i unikając powtarzających się pobierania danych. Buforowanie zwiększa szybkość odczytu i czas odpowiedzi użytkownika, szczególnie w przypadku często używanych danych Ta metoda jest najbardziej skuteczna w przypadku danych statycznych lub danych, które rzadko się zmieniają.

Aby zapewnić optymalną wydajność buforowania, rozważ czynniki, takie jak zasady wygasania, strategie eksmisji i zarządzanie rozmiarem pamięci podręcznej. Dostosuj ustawienia, takie jak czas wygaśnięcia (TTL), aby uzyskać optymalną wydajność. Aby użyć pamięci podręcznej do optymalizacji obciążenia magazynu, rozważ następujące strategie:

  • Buforowanie w pamięci: wykonywanie buforowania w pamięci w celu przechowywania często używanych danych w pamięci w celu szybkiego pobierania. Możesz użyć tej techniki w przypadku danych aplikacji, które są kosztowne do obliczenia lub pobrania z bazy danych. Buforowanie w pamięci jest przydatne w przypadku często odczytywanych danych, ale nie zmienia się często.

  • Buforowanie zapytań bazy danych: ta technika umożliwia buforowanie wyników 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. Gdy buforujesz wyniki zapytania, kolejne żądania dla tego samego zapytania są szybko zwracane.

  • Buforowanie sieci dostarczania zawartości: ta technika umożliwia buforowanie zawartości internetowej na rozproszonych serwerach sieciowych w celu zmniejszenia opóźnienia i poprawy dostarczania zawartości. Buforowanie sieci dostarczania zawartości jest skuteczne w przypadku zawartości statycznej, takiej jak obrazy, pliki CSS i pliki JavaScript. Sieci dostarczania zawartości przechowują kopie zawartości w wielu lokalizacjach na całym świecie, dzięki czemu użytkownicy mogą uzyskiwać dostęp do zawartości z serwera, który znajduje się w pobliżu nich geograficznie.

Używanie replik do odczytu

Wiele baz danych obsługuje wiele replik do odczytu. Dystrybuuj zapytania odczytu między replikami, aby zminimalizować zapotrzebowanie na bazę danych zapisu. Każda replika do odczytu może obsługiwać podzestaw ruchu, co może zwiększyć wydajność.

Jeśli masz obciążenie z wieloma replikami danych, które powinny pozostać zsynchronizowane, warto modelować ten rozproszony system przy użyciu twierdzenia PACELC. Twierdzenie PACELC pomaga zrozumieć opóźnienie i niestanowe wybory kompromisu w stanie niepartyjnym systemu. Skorzystaj z tych informacji, aby ułatwić wybór aparatu bazy danych i strategii synchronizacji danych, która najlepiej odpowiada systemowi w stanie partycjonowanego i niepartycyjnego. Aby uzyskać więcej informacji, zobacz Wzorzec podziału odpowiedzialności poleceń i zapytań (CQRS).

Optymalizowanie spójności danych

W obciążeniu rozproszonym, w którym dane znajdują się w wielu węzłach lub lokalizacjach, wybierany poziom spójności określa, jak szybko zmiany w jednej lokalizacji odzwierciedlają się w innych. Wybranie bardziej rygorystycznej spójności zużywa więcej zasobów obliczeniowych i może negatywnie wpłynąć na wydajność. Z drugiej strony, mniej rygorystyczny poziom spójności, taki jak spójność ostateczna, wprowadza tymczasowe niespójności między węzłami, ale może zwiększyć wydajność.

Spójność ostateczna zapewnia równowagę między dokładnością danych a wydajnością obciążenia. Zmiany rozprzestrzeniają się stopniowo zamiast natychmiast, zwiększając czas reakcji obciążenia i szybkość przetwarzania danych. Mimo że wprowadza krótkotrwałe niespójności, obciążenie ostatecznie przedstawia spójne dane we wszystkich węzłach. Wybranie spójności ostatecznej może zwiększyć wydajność obciążenia i zwiększyć jej dostępność i skalowalność.

Optymalizowanie aktualizacji danych

Możesz użyć optymistycznej współbieżności do obsługi współbieżnych aktualizacji do tych samych danych. Zamiast blokować dane i zapobiegać innym aktualizacjom, optymistyczna współbieżność pozwala wielu użytkownikom lub procesom działać współbieżnie i zakłada, że konflikty są rzadkie.

Dzięki optymistycznej współbieżności każda operacja aktualizacji zawiera wersję lub sygnaturę czasową reprezentującą stan danych w momencie aktualizacji. Po wykryciu aktualizacji powodującej konflikt system rozwiązuje konflikt, odrzucając aktualizację lub scalając zmiany.

Optymistyczna współbieżność minimalizuje rywalizację i umożliwia równoczesne aktualizowanie bez niepotrzebnego blokowania. Skraca czas oczekiwania na zasoby i zapewnia wysoką przepływność.

Optymalizowanie przenoszenia i przetwarzania danych

Optymalizacja przenoszenia i przetwarzania danych obejmuje poprawę wydajności i wydajności operacji związanych z wyodrębnianiem danych, przekształcaniem, ładowaniem i przetwarzaniem. Rozważ następujące kluczowe aspekty optymalizacji przenoszenia i przetwarzania danych:

  • Optymalizacja wyodrębniania, przekształcania i ładowania (ETL): Optymalizowanie procesów ETL w celu zminimalizowania czasu przetwarzania. Proces wyodrębniania można usprawnić, zaimplementować wydajne algorytmy przekształcania i zoptymalizować proces ładowania. Gdy każdy krok będzie wydajny, możesz zoptymalizować ogólny przepływ pracy.

  • Przetwarzanie równoległe: korzystaj z technik przetwarzania równoległego w celu zwiększenia wydajności. Podczas dystrybucji zadań przetwarzania danych w wielu wątkach lub węzłach można podzielić i przetworzyć obciążenie współbieżnie, co powoduje szybkie przetwarzanie.

  • Przetwarzanie wsadowe: grupuj podobne zadania, aby zmniejszyć obciążenie spowodowane powtarzającymi się operacjami. Przetwarzanie wielu zadań w partii w celu skrócenia ogólnego czasu przetwarzania.

Optymalizowanie projektu magazynu

Optymalizacja projektu magazynu wiąże się z tworzeniem dokładnej architektury magazynu danych i wybieraniem odpowiednich technologii magazynowania. Usprawniony projekt magazynu zwiększa dostęp do danych, pobieranie i manipulowanie nimi. Dzięki strategicznemu projektowi magazynu obciążenie zapewnia lepsze czasy odpowiedzi i ogólną funkcjonalność.

Projektowanie pod kątem zbliżenia danych

Bliskość danych odnosi się do strategicznego umieszczania danych bliżej użytkowników lub usług, które najczęściej uzyskują do niego dostęp. Dzięki zmniejszeniu fizycznej lub logicznej odległości między danymi a użytkownikami bliskość danych zapewnia szybszy dostęp do danych i lepszą szybkość reakcji. Aby zoptymalizować projekt pod kątem bliskiej odległości, rozważ następujące strategie:

  • Ocena wzorców dostępu do danych: ocena wzorców dostępu obciążenia i często używanych danych. Ta analiza może pomóc w ustaleniu, gdzie można umieścić dane w celu uzyskania maksymalnej korzyści.

  • Wybierz rozwiązania, które obsługują 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, które obsługują synchronizację danych: w przypadku obsługi obsługi rozproszonej bazy użytkowników wybierz rozwiązania, które ułatwiają synchronizację danych w różnych regionach, zapewniając, że repliki danych są dostępne blisko użytkowników.

Kompromis: jeśli dane bazowe często się zmieniają, zaimplementuj mechanizm unieważniania pamięci podręcznej, aby zapewnić aktualność buforowanych danych.

Korzystanie z trwałości wielolotowej

Trwałość uniwersalna polega na używaniu wielu technologii magazynowania danych do przechowywania różnych typów danych i zarządzania nimi w aplikacji lub systemie. Różne typy baz danych lub rozwiązań magazynu spełniają różne wymagania dotyczące danych.

Trwałość uniwersalna wykorzystuje zalety każdej technologii magazynu danych, aby zapewnić optymalną wydajność i skalowalność dla każdego typu danych. Na przykład możesz użyć relacyjnej bazy danych do przechowywania danych strukturalnych, transakcyjnych. Możesz też użyć bazy danych NoSQL do przechowywania danych bez struktury lub częściowo ustrukturyzowanych.

Projektowanie schematu dla każdej technologii przechowywania danych na podstawie wymagań dotyczących danych. W przypadku relacyjnych baz danych można utworzyć znormalizowane tabele z odpowiednimi relacjami. W przypadku baz danych NoSQL można zdefiniować struktury dokumentów lub pary klucz-wartość. Opracuj składniki niezbędne do interakcji z każdą technologią magazynu danych, taką jak interfejsy API, warstwy dostępu do danych lub potoki integracji danych. Upewnij się, że aplikacja może odczytywać i zapisywać dane w odpowiednich magazynach danych.

Kompromis: Struktura danych o niskiej normalizacji może poprawić wydajność, ale wprowadzić złożoność.

Oddzielne systemy OLTP i OLAP

Aby oddzielić systemy OLTP i OLAP , projektuj i wdrażaj odrębne systemy na potrzeby zadań przetwarzania transakcyjnego i przetwarzania analitycznego. Ta separacja pozwala zoptymalizować każdy system pod kątem konkretnych obciążeń i cech.

Systemy OLTP są używane do przetwarzania transakcyjnego w czasie rzeczywistym. Wydajnie i niezawodnie obsługują poszczególne transakcje. Systemy OLTP są zwykle używane do wykonywania codziennych zadań operacyjnych, takich jak przetwarzanie zamówień online, zarządzanie zapasami i zarządzanie danymi klientów. Systemy OLTP priorytetują czas odpowiedzi, spójność i współbieżność.

Systemy OLAP są używane do złożonego przetwarzania analitycznego i raportowania. Obsługują duże ilości danych i wykonują intensywne obliczenia i agregacje. Systemy OLAP są używane do wykonywania zadań, takich jak analiza biznesowa, wyszukiwanie danych i obsługa decyzji. Systemy OLAP ustalają priorytety wydajności zapytań, agregacji danych i analizy wielowymiarowej.

Podczas oddzielania systemów OLTP i OLAP można przydzielić odpowiednie zasoby i zoptymalizować każdy system pod kątem konkretnego obciążenia. Separacja umożliwia stosowanie różnych technik modelowania danych do każdego systemu. Systemy OLTP zwykle używają znormalizowanych schematów do wydajnego przetwarzania transakcyjnego. Systemy OLAP mogą używać zdenormalizowanych schematów lub technik magazynowania danych w celu zoptymalizowania wydajności zapytań.

Ułatwienia dla platformy Azure

Dane profilowania: platforma Azure oferuje narzędzia i usługi, których można użyć do profilowania danych, takich jak Azure Data Catalog, Azure Purview i Azure Synapse Analytics. Te narzędzia umożliwiają wyodrębnianie, przekształcanie i ładowanie danych z różnych źródeł, przeprowadzanie kontroli jakości danych i uzyskiwanie wglądu w dane.

Monitorowanie wydajności danych: aby monitorować wydajność danych, możesz użyć 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, takimi jak Application Insights. Usługa Application Insights zapewnia monitorowanie wydajności aplikacji i obsługuje wiele platform.

Usługa Application Insights zbiera dane użycia i wydajności. Za pomocą usługi Log Analytics można skorelować te dane z danymi konfiguracji i wydajności w zasobach platformy Azure.

Aby monitorować bazę danych, możesz użyć funkcji szczegółowych informacji Azure SQL i usługi Azure Cosmos DB. Ta funkcja umożliwia diagnozowanie i dostrajanie problemów z wydajnością bazy danych.

Partycjonowanie danych: platforma Azure oferuje różne strategie partycjonowania dla różnych magazynów danych. Każdy magazyn danych może mieć różne zagadnienia i opcje konfiguracji dotyczące partycjonowania danych. Aby uzyskać więcej informacji, zobacz Strategie partycjonowania danych.

Optymalizowanie zapytań bazy danych i wydajności indeksu: użyj funkcji szczegółowych informacji o wydajności zapytań usługi Azure SQL Database, aby zoptymalizować zapytania, tabele i bazy danych. Ta funkcja służy 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 indeksów, wskazówkami dotyczącymi indeksu SQL Server i wskazówkami dotyczącymi indeksu usługi Azure Cosmos DB. Użyj SQL Database, aby wykonać automatyczne dostrajanie zapytań w celu zwiększenia ich wydajności.

W bazach danych SQL należy regularnie reorganizować lub odbudowywać indeksy. Identyfikowanie wolnych zapytań i dostrajanie ich w celu zwiększenia wydajności. Wiele aparatów baz danych ma funkcje dostrajania zapytań. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące wydajności zapytań.

Usługa Azure Cosmos DB ma domyślne zasady indeksowania, które indeksują każdą właściwość każdego elementu i wymuszają indeksy zakresu dla dowolnego ciągu lub liczby. Te zasady zapewniają wydajną wydajność zapytań i nie trzeba zarządzać indeksami z góry.

Optymalizacja obciążenia magazynu: wiele usług bazy danych platformy Azure obsługuje repliki do odczytu. Dostępność i konfiguracja replik do odczytu różnią się w zależności od usługi bazy danych platformy Azure. Zapoznaj się z oficjalną dokumentacją każdej usługi, aby poznać szczegóły i opcje.

Optymalizacja projektu magazynu: platforma Azure oferuje wiele różnych magazynów danych odpowiadających potrzebom obciążeń. Omówienie typów magazynów danych i wybieranie magazynu danych platformy Azure dla aplikacji.

Lista kontrolna dotycząca wydajności

Zapoznaj się z pełnym zestawem zaleceń.