Profiluj swoją bazę danych

Mierz wydajność Firebase Realtime Database za pomocą profilera bazy danych, który jest wbudowany w interfejs wiersza poleceń Firebase. Narzędzie profilujące rejestruje całą aktywność w bazie danych w danym okresie, a następnie generuje szczegółowy raport. Korzystaj ze szczegółowego raportu, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać problematyczne obszary i ograniczać liczbę niezaindeksowanych zapytań.

Tworzenie profilu

  1. Zanim zaczniesz profilować Firebase Realtime Database, upewnij się, że używasz najnowszej wersji Firebase interfejsu wiersza poleceń i że został on zainicjowany w przypadku bazy danych i projektu, które chcesz profilować. Uwaga: aby profilować projekt, musisz mieć uprawnienia edytującego lub właściciela.

  2. Rozpocznij profilowanie bazy danych za pomocą tego polecenia:

    firebase database:profile
    Profiler wyświetla komunikat o stanie podczas rejestrowania operacji z bazy danych i tworzenia profilu.

  3. Naciśnij Enter, aby dokończyć profil i wyświetlić wyniki.

Interpretowanie wyników

Narzędzie do profilowania agreguje zebrane dane o operacjach w bazie danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, przepustowośćnieindeksowane zapytania.

Szybkość

Raport dotyczący szybkości mierzy czas reakcji serwera (w milisekundach) dla każdego typu operacji. Szybkość mierzona w Raporcie dotyczącym szybkości może jednak nie odzwierciedlać szybkości, z jaką korzystają użytkownicy. Różne czynniki, w tym warunki sieciowe, mogą powodować opóźnienia po stronie klienta.

Raport o szybkości zawiera te właściwości:

  • Ścieżka: ścieżka w bazie danych, w której wystąpiły operacje. Jeśli węzłów podrzędnych jest więcej niż 25, narzędzie do profilowania zwija je w ścieżkę nadrzędną i dodaje znacznik $wildcard. W raporcie może się pojawić katalog główny bazy danych, oznaczony ukośnikiem /.
  • Liczba: liczba operacji, które wystąpiły w danym miejscu.
  • Średnia szybkość wykonywania: średni czas, jaki serwer potrzebuje na wykonanie logiki biznesowej niezbędnej do obsługi danego typu operacji na tej ścieżce. Mierzony tu przedział czasu rozpoczyna się po przedziale czasu mierzonym przez „Średni czas oczekiwania” opisanym poniżej.
  • Średni czas oczekiwania: średni czas, przez jaki żądania oczekują w kolejce przed wykonaniem. To opóźnienie występuje w przypadku wszystkich żądań inicjowanych przez klienta. Całkowity czas oczekiwania na żądanie po stronie serwera to w przybliżeniu suma czasu oczekiwania i szybkości wykonania tego żądania.
  • Permission Denied:liczba operacji w danym ścieżce, które zostały zablokowane przez reguły bazy danych Firebase w Twojej bazie danych.
Raport dotyczący szybkości według typu operacji
Odczytywanie szybkości wykonywania Czas odpowiedzi serwera na żądania klientów dotyczące odczytu danych z bazy danych. Czas wykonywania odczytu jest zwykle proporcjonalny do ilości odczytywanych danych, ale nawet niektóre małe odczyty mogą być opóźnione przez wstępne pobieranie z pamięci podręcznej.
Szybkość wykonywania zapisu Czas odpowiedzi serwera na żądania klientów dotyczące zapisywania danych w bazie danych. Zapisz skale czasu wykonywania z ilością zapisywanych danych.
Szybkość wykonywania połączenia Czas reakcji serwera na żądania połączenia z klientami bazy danych. Na czas oczekiwania na żądania połączenia ma największy wpływ rejestrowanie po stronie serwera w pamięci związane z zarządzaniem połączeniami.
Szybkość wykonywania transmisji

Czas, jaki serwer potrzebuje na rozpowszechnienie danych wśród klientów, którzy nasłuchują danego ścieżki w celu otrzymywania aktualizacji w czasie rzeczywistym.

Właściwość Count w raporcie o szybkości transmisji zawiera zagregowaną liczbę transmisji, a nie liczbę klientów, którzy otrzymali informacje. Jeśli np. 10 klientów nasłuchiwało na danej ścieżce, a serwer rozesłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko 1 transmisję, mimo że dane otrzymało 10 klientów.

Usługa Odmowa uprawnień nie jest uwzględniana w raporcie Szybkość transmisji.

Przepustowość

Raport dotyczący przepustowości zawiera informacje o tym, ile danych zużywa Twoja baza danych w ramach operacji przychodzących i wychodzących. Nie należy jednak używać raportu przepustowości do szacowania rozliczeń, ponieważ nie obejmuje on przepustowości używanej do innych operacji, takich jak profilowanie bazy danych. Raport dotyczący przepustowości zawiera przybliżone oszacowanie rozmiaru ładunku danych zużywanych przez operacje odczytu, zapisu i transmisji do i z bazy danych. Jest to narzędzie do pomiaru skuteczności, a nie do prognozowania płatności.

Raport „Przepustowość” zawiera te usługi:

  • Ścieżka: ścieżka w bazie danych, w której wystąpiły operacje. Jeśli węzłów podrzędnych jest więcej niż 25, narzędzie profilujące zwija je w ścieżkę nadrzędną.

  • Łącznie: łączna liczba bajtów wychodzących lub przychodzących używanych we wszystkich operacjach w danym ścieżce.

  • Liczba: liczba operacji, które wystąpiły w danym miejscu.

  • Średnia: średnia liczba pobranych lub przesłanych bajtów w operacjach na danej ścieżce (bajty/zapis lub bajty/odczyt).

Raport dotyczący przepustowości
Pobrane bajty Dane wykorzystywane w operacjach odczytu i transmisji wysyłanych za pomocą pakietów SDK klienta i interfejsu REST API.
Przesłane bajty Dane wykorzystywane przez żądania zapisu przychodzące do serwera bazy danych. Usunięcia są wyświetlane jako zapisy z 0 bajtów w sekcji przychodzących.

Zapytania nieindeksowane

Zapytania bez indeksu mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w lokalizacji, a następnie wykonują na nich zapytania. Zużywa to więcej przepustowości niż jest to konieczne. Rozwiąż jak najwięcej problemów z niezindeksowanymi zapytaniami, aby zoptymalizować wydajność bazy danych.

Raport Nieindeksowane zapytania zawiera te właściwości:

  • Ścieżka: ścieżka w bazie danych, w której wystąpiły niezindeksowane zapytania.
  • Indeks: reguła, którą należy dodać, aby rozwiązać problem z niezindeksowanymi zapytaniami. Więcej informacji o indeksowaniu znajdziesz w artykule Indeksowanie danych.
  • Liczba: liczba niezindeksowanych zapytań, które wystąpiły w danym miejscu.

Zaawansowane profilowanie

Aby zobaczyć wszystkie operacje obsługiwane przez bazę danych, podczas profilowania bazy danych użyj flagi --raw, jak pokazano poniżej:

firebase database:profile --raw

Surowe dane wyjściowe zawierają też informacje o klientach w przypadku każdej operacji, np. ciągi znaków userAgent i adresy IP. Dowiedz się więcej o różnych operacjachFirebase Realtime DatabaseFirebase Realtime Database Typach operacji.

Narzędzie do profilowania: nie jest narzędziem rozliczeniowym

Nie używaj narzędzia do profilowania do szacowania kosztów przepustowości. Narzędzie do profilowania ma na celu przedstawienie ogólnego obrazu wydajności bazy danych, aby pomóc Ci w monitorowaniu operacji i rozwiązywaniu problemów, a nie w szacowaniu płatności. Nie uwzględnia ruchu w sieci, a jedynie szacunkową ilość danych aplikacji wysłanych w odpowiedziach.

Oto kilka typowych przykładów ruchu w sieci rozliczanego przez Firebase, który nie jest uwzględniony w profilu bazy danych:

  • Narzucone obciążenie protokołu: do nawiązania i utrzymania sesji konieczny jest dodatkowy ruch między serwerem a klientami. W zależności od protokołu bazowego ten ruch może obejmować: narzut protokołu czasu rzeczywistego Bazy danych czasu rzeczywistego Firebase, narzut protokołu WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten narzut w połączeniu z narzutem szyfrowania SSL zwiększa koszty połączenia. Zwykle nie jest to duża przepustowość, ale może być znacząca, jeśli ładunki są małe lub często nawiązujesz krótkie połączenia.
  • Obciążenie związane z szyfrowaniem SSL: z szyfrowaniem SSL niezbędnym do nawiązywania bezpiecznych połączeń wiąże się pewien koszt. Średnio koszt ten wynosi około 3,5 KB w przypadku początkowego uzgadniania połączenia i około 40 B w przypadku nagłówków rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki odsetek rachunku. Jeśli jednak w Twoim przypadku wymaganych jest wiele uzgodnień SSL, może to stanowić duży odsetek. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgodnień połączenia SSL.

Dowiedz się więcej o rozumieniu i szacowaniu rachunku.