Profiluj swoją bazę danych

Zmierz wydajność bazy danych czasu rzeczywistego Firebase za pomocą narzędzia do profilowania bazy danych wbudowanego w interfejs wiersza polecenia Firebase . Narzędzie do profilowania rejestruje całą aktywność w Twojej bazie danych w danym okresie, a następnie generuje szczegółowy raport. Skorzystaj ze szczegółowego raportu, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać obszary problemowe i ograniczać liczbę niezindeksowanych zapytań.

Zbuduj profil

  1. Zanim zaczniesz profilować bazę danych czasu rzeczywistego Firebase, upewnij się, że korzystasz z najnowszej wersji interfejsu wiersza polecenia Firebase i że została ona zainicjowana dla bazy danych i projektu, które chcesz profilować. Pamiętaj, że aby profilować, musisz być redaktorem lub właścicielem tego projektu.

  2. Rozpocznij profilowanie bazy danych za pomocą następującej komendy:

    firebase database:profile
    Podczas rejestrowania operacji z bazy danych i budowania profilu profiler wyświetla komunikat o stanie.

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

Zinterpretuj swoje wyniki

Narzędzie profilera agreguje zebrane dane dotyczące operacji bazy danych i wyświetla wyniki w trzech podstawowych kategoriach: prędkość , przepustowość i niezaindeksowane zapytania .

Prędkość

Raport prędkoś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ć doświadczenia użytkowników końcowych w zakresie prędkości. 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 Twojej bazie danych, w której wystąpiły operacje. Jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie profilera zwija je w ścieżkę nadrzędną i dodaje znacznik $wildcard . W raporcie możesz zobaczyć katalog główny bazy danych, reprezentowany przez ukośnik / .
  • Liczba: liczba operacji, które wystąpiły na danej ścieżce.
  • Średnia szybkość wykonywania: średni czas potrzebny serwerowi na wykonanie logiki biznesowej potrzebnej do obsługi określonego typu operacji na tej ścieżce. Zmierzony tutaj przedział czasowy rozpoczyna się po upływie czasu zmierzonego 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 na danej ścieżce, które zostały zablokowane przez reguły bazy danych Firebase w Twojej bazie danych.
Raport prędkoś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 generalnie skaluje się wraz z ilością odczytywanych danych, ale nawet niektóre małe odczyty mogą być również opóźnione przez wstępne pobieranie pamięci podręcznej.
Szybkość wykonywania zapisu Czas odpowiedzi serwera na żądania klientów dotyczące zapisu danych w bazie danych. Czas wykonania zapisu skaluje się wraz z ilością zapisywanych danych.
Szybkość wykonywania połączenia Czas odpowiedzi serwera na żądania nawiązania do klientów bazy danych. Opóźnienia dla żą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, jaki zajmuje serwerowi dystrybucja danych do klientów nasłuchujących na danej ścieżce w celu aktualizacji w czasie rzeczywistym.

Właściwość Count w raporcie o szybkości transmisji agreguje liczbę emisji, które miały miejsce, 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 wyemitował 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ędniona w raporcie Szybkość transmisji.

Pasmo

Raport o przepustowości zapewnia wgląd w ilość danych zużywanych przez bazę danych w operacjach przychodzących i wychodzących. Nie należy jednak używać raportu przepustowości do szacowania rozliczeń, ponieważ nie obejmuje on przepustowości wykorzystywanej do innych operacji, takich jak profilowanie bazy danych. Raport o przepustowości w przybliżeniu szacuje rozmiar ładunku danych zużywanych przez operacje odczytu, zapisu i emisji do iz bazy danych. To narzędzie, które mierzy wydajność, a nie prognozuje rozliczenia.

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

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

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

  • Liczba: liczba operacji, które wystąpiły na danej ścieżce.

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

Raport przepustowości
Pobrane bajty Dane zużywane przez operacje odczytu i emisji wysyłane za pośrednictwem klienckich pakietów SDK i interfejsu API REST.
Przesłane bajty Dane zużywane przez żądania zapisu przychodzące do serwera bazy danych. Usunięcia są wyświetlane jako zapisy z 0 bajtami pod przychodzącymi.

Zapytania niezindeksowane

Zapytania niezindeksowane mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w lokalizacji, a następnie wykonują na niej zapytania. To zużywa większą przepustowość niż to konieczne. Rozwiąż jak najwięcej niezindeksowanych zapytań, aby zoptymalizować wydajność bazy danych.

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

  • Ścieżka: ścieżka w Twojej bazie danych, w której 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 Indeksuj swoje dane .
  • Liczba: liczba niezindeksowanych zapytań, które wystąpiły w podanej ś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

Nieprzetworzone 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 czasu rzeczywistego Firebase w sekcji Typy operacji bazy danych czasu rzeczywistego Firebase .

Narzędzie do profilowania: nie narzędzie do rozliczeń

Nie używaj narzędzia do profilowania, aby oszacować koszt przepustowości. Narzędzie profilera ma na celu przedstawienie ogólnego obrazu wydajności bazy danych, aby ułatwić monitorowanie operacji i rozwiązywanie problemów, a nie szacowanie rozliczeń. Nie uwzględnia ruchu sieciowego, rejestruje jedynie szacunkowe dane aplikacji wysłane w odpowiedziach.

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

  • Narzut protokołu: pewien dodatkowy ruch między serwerem a klientami jest niezbędny do ustanowienia i utrzymania sesji. W zależności od protokołu bazowego ten ruch może obejmować: obciążenie protokołu czasu rzeczywistego Firebase Realtime Database, obciążenie WebSocket i obciążenie nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten narzut, w połączeniu z dowolnym narzutem szyfrowania SSL, przyczynia się do kosztów połączenia. Chociaż zwykle nie jest to duża przepustowość, może być znacząca, jeśli Twoje ładunki są małe lub jeśli nawiązujesz częste, krótkie połączenia.
  • Narzuty na szyfrowanie SSL: Istnieje koszt związany z narzutami na szyfrowanie SSL niezbędnymi do bezpiecznych połączeń. Średnio koszt ten wynosi około 3,5 KB dla początkowego uzgadniania i około 40 KB dla nagłówków rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent Twojego rachunku. Może to jednak stać się dużym odsetkiem, jeśli Twój konkretny przypadek wymaga wielu uścisków dłoni SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgadniania połączeń SSL.

Przeczytaj więcej o zrozumieniu i oszacowaniu rachunku .