Profiluj swoją bazę danych

Zmierz wydajność bazy danych Firebase Realtime Database za pomocą narzędzia profilera bazy danych wbudowanego w interfejs wiersza polecenia Firebase . Narzędzie profilera rejestruje całą aktywność w bazie danych w danym okresie, a następnie generuje szczegółowy raport. Skorzystaj ze szczegółowego raportu, aby rozwiązać problemy z wydajnością bazy danych, wykryć obszary problematyczne i ograniczyć liczbę niezindeksowanych zapytań.

Zbuduj profil

  1. Zanim zaczniesz profilować bazę danych Firebase Realtime Database, upewnij się, że używasz najnowszej wersji interfejsu CLI Firebase i że zainicjowałeś ją dla bazy danych i projektu, który chcesz profilować. Pamiętaj, że aby móc profilować, musisz być redaktorem lub właścicielem tego projektu.

  2. Rozpocznij profilowanie bazy danych za pomocą następującego polecenia:

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

  3. Naciśnij Enter , aby uzupełnić profil i wyświetlić wyniki.

Zinterpretuj swoje wyniki

Narzędzie profiler agreguje zebrane dane na temat operacji bazy danych i wyświetla wyniki w trzech głównych kategoriach: szybkość , przepustowość i zapytania nieindeksowane .

Prędkość

Raport szybkości mierzy czas odpowiedzi serwera (w milisekundach) dla każdego typu operacji. Jednak prędkość zmierzona w Raporcie prędkości może w rzeczywistości nie odzwierciedlać prędkości odczuwanej przez użytkowników końcowych. Różne czynniki, w tym warunki sieciowe, mogą zwiększać opóźnienia po stronie klienta.

Raport prędkości zawiera następujące właściwości:

  • Ścieżka: Ścieżka w bazie danych, w której wystąpiły operacje. Jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie profilowania zwija je do ścieżki nadrzędnej i dodaje znacznik $wildcard . W raporcie możesz zobaczyć katalog główny bazy danych, oznaczony ukośnikiem / .
  • Liczba: Liczba operacji, które miały miejsce na danej ścieżce.
  • Średnia prędkość wykonywania: średni czas potrzebny serwerowi na wykonanie logiki biznesowej potrzebnej do obsługi określonego typu operacji na tej ścieżce. Mierzony tutaj przedział czasu rozpoczyna się po przedziale czasu mierzonym przez „Średni czas oczekiwania” opisany poniżej.
  • Średni czas oczekiwania: średni czas oczekiwania żądań w kolejce przed wykonaniem. To opóźnienie jest wspólne dla wszystkich żądań inicjowanych przez klienta. Całkowite opóźnienie żądania po stronie serwera jest w przybliżeniu sumą czasu oczekiwania i szybkości wykonania tego żądania.
  • Odmowa uprawnień: liczba operacji w danej ścieżce, które zostały zablokowane przez reguły bazy danych Firebase w Twojej bazie danych.
Raport prędkości według rodzaju operacji
Przeczytaj Szybkość wykonania Czas odpowiedzi serwera na żądania klientów dotyczące odczytu danych z bazy danych. Czas wykonania odczytu zazwyczaj skaluje się wraz z ilością odczytywanych danych, ale nawet niektóre małe odczyty mogą być opóźnione przez wstępne pobieranie pamięci podręcznej.
Szybkość wykonania zapisu Czas odpowiedzi serwera na żądania klientów dotyczące zapisu danych do bazy danych. Zapisz skale czasu wykonania wraz z ilością zapisywanych danych.
Połącz prędkość wykonania Czas odpowiedzi serwera na żądania wysyłane do klientów bazy danych. Opóźnienia w przypadku żądań połączeń są zdominowane przez księgowość po stronie serwera w pamięci związaną z zarządzaniem połączeniami.
Szybkość wykonywania transmisji

Czas potrzebny serwerowi na dystrybucję danych do klientów nasłuchujących danej ścieżki w celu uzyskania aktualizacji w czasie rzeczywistym.

Właściwość Count w raporcie szybkości transmisji agreguje liczbę zrealizowanych emisji, a nie liczbę klientów, którzy otrzymali informacje. Na przykład, jeśli na danej ścieżce nasłuchiwało 10 klientów, a serwer rozesłał aktualizację do wszystkich 10 klientów, liczba emisji odzwierciedla tylko 1 emisję, mimo że dane odebrało 10 klientów.

Właściwość Odmowa uprawnień nie jest uwzględniana w raporcie Szybkość rozgłaszania.

Przepustowość łącza

Raport przepustowości zapewnia wgląd w ilość danych zużywanych przez bazę danych podczas operacji przychodzących i wychodzących. Nie należy jednak używać raportu przepustowości do szacowania rozliczeń, ponieważ nie uwzględnia on przepustowości wykorzystywanej do innych operacji, takich jak profilowanie bazy danych. Raport przepustowości w przybliżeniu szacuje rozmiar ładunku danych zużywanych przez operacje odczytu, zapisu i emisji do i z bazy danych. Jest to narzędzie mierzące wydajność, a nie prognozujące rozliczenia.

Raport przepustowości zawiera następujące właściwości:

  • Ścieżka: Ścieżka w bazie danych, w której wystąpiły operacje. Jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie profilowania zwija je do ścieżki nadrzędnej.

  • Razem: łączna liczba bajtów wychodzących i przychodzących wykorzystanych we wszystkich operacjach na danej ścieżce.

  • Liczba: Liczba operacji, które miały miejsce na danej ścieżce.

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

Raport przepustowości
Pobrane bajty Dane zużywane podczas operacji odczytu i emisji wysyłane za pośrednictwem klienckich zestawów SDK i interfejsu API REST.
Przesłane bajty Dane zużywane w wyniku żądań zapisu przychodzących do serwera bazy danych. Usunięcia pojawiają się jako zapisy z 0 bajtami pod danymi przychodzącymi.

Nieindeksowane zapytania

Zapytania niezindeksowane mogą być kosztowne, ponieważ klienci pobierają wszystkie dane z danej lokalizacji, a następnie wykonują na nich zapytania. Zużywa to więcej pasma niż to konieczne. Rozwiąż jak najwięcej niezindeksowanych zapytań, aby zoptymalizować wydajność bazy danych.

Raport Zapytania niezindeksowane zawiera następujące właściwości:

  • Ścieżka: Ścieżka w bazie danych, gdzie wystąpiły niezindeksowane zapytania.
  • Indeks: Reguła, którą należy dodać, aby rozwiązać niezindeksowane zapytania. Dowiedz się więcej o indeksowaniu w artykule Indeksuj swoje dane .
  • Liczba: liczba niezindeksowanych zapytań, które wystąpiły w danej ścieżce.

Zaawansowane profilowanie

Aby zobaczyć wszystkie operacje obsługiwane przez bazę danych, użyj flagi --raw podczas profilowania bazy danych w następujący sposób:

firebase database:profile --raw

Surowe dane wyjściowe zawierają również informacje o kliencie dla każdej operacji, takie jak ciągi userAgent i adresy IP. Dowiedz się więcej o różnych operacjach profilowanych w bazie danych Firebase Realtime Database w sekcji Typy operacji bazy danych Firebase Realtime Database .

Narzędzie profilujące: nie jest narzędziem rozliczeniowym

Nie używaj narzędzia profilera do szacowania kosztu przepustowości. Narzędzie profiler ma na celu dać ogólny obraz wydajności bazy danych, pomóc w monitorowaniu operacji i rozwiązywaniu problemów, a nie w celu szacowania rozliczeń. Nie uwzględnia ruchu sieciowego, rejestruje jedynie szacunkową ilość danych aplikacji przesłanych w odpowiedziach.

Poniżej przedstawiono kilka typowych przykładów ruchu sieciowego rozliczanego przez Firebase, który nie jest uwzględniony w profilu Twojej bazy danych:

  • Narzut protokołu: do ustanowienia i utrzymania sesji niezbędny jest dodatkowy ruch między serwerem a klientami. W zależności od protokołu bazowego ruch ten może obejmować: narzut protokołu Firebase Realtime Database, narzut protokołu WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy połączenie jest nawiązywane, narzut ten, w połączeniu z narzutem związanym z szyfrowaniem SSL, zwiększa koszty połączenia. Chociaż zazwyczaj nie jest to duża przepustowość, może być znaczna, jeśli ładunki są małe lub wykonujesz częste, krótkie połączenia.
  • Narzut szyfrowania SSL: Z narzutem szyfrowania SSL niezbędnym do bezpiecznych połączeń wiążą się koszty. Średnio koszt ten wynosi około 3,5 KB w przypadku początkowego uzgadniania i około 40 miliardów w przypadku nagłówków rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent rachunku. Może to jednak stanowić duży odsetek, jeśli Twój konkretny przypadek wymaga wielu uzgadniań SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgadniania połączenia SSL.

Przeczytaj więcej o zrozumieniu i oszacowaniu rachunku .