Profiluj swoją bazę danych

Zmierz wydajność aplikacji Firebase Realtime Database za pomocą narzędzia do profilowania bazy danych, które jest wbudowane w interfejs wiersza poleceń Firebase. Narzędzie profilujące rejestruje całą aktywność w Twojej bazie danych w określonym przedziale czasu, a potem generuje szczegółowy raport. Korzystaj z szczegółowego raportu, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać obszary problemowe i zmniejszać liczbę nieindeksowanych zapytań.

Tworzenie profilu

  1. Zanim zaczniesz profilowanie Firebase Realtime Database, upewnij się, że używasz najnowszej wersji interfejsu wiersza poleceń Firebase i że masz go zainicjowany w przypadku bazy danych i projektu, które chcesz profilować. Pamiętaj, że musisz być edytorem lub właścicielem tego projektu, aby go wyświetlić.

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

    firebase database:profile
    Podczas rejestrowania operacji z Twojej bazy danych i tworzenia profilu profilator wyświetla komunikat o stanie.

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

Interpretowanie wyników

Narzędzie do profilowania agreguje dane zebrane na temat operacji w Twojej bazie danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, szerokość pasmazapytania niezaindeksowane.

Szybkość

Raport Prędkość mierzy czas odpowiedzi serwera (w milisekundach) dla każdego typu operacji. Szybkość zmierzona w raporcie dotyczącym szybkości może jednak nie odzwierciedlać rzeczywistej szybkości, z jaką użytkownicy korzystają z witryny. Różne czynniki, w tym stan sieci, mogą zwiększać opóźnienia po stronie klienta.

Raport Szybkość zawiera te usługi:

  • Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły operacje. Jeśli jest ich więcej niż 25, narzędzie profilujące łączy je w ścieżkę nadrzędną i dodaje znacznik $wildcard. W raporcie możesz zobaczyć katalog główny bazy danych, który jest reprezentowany przez ukośnik /.
  • Liczba:liczba operacji wykonanych na danej ścieżce.
  • Średnia szybkość wykonania:średni czas potrzebny serwerowi na wykonanie logiki biznesowej potrzebnej do obsługi określonego typu operacji na tej ścieżce. Tu mierzony jest przedział czasu, który zaczyna się po tym, który jest mierzony w ramach „Średniego czasu oczekiwania”.
  • Średni czas oczekiwania: średni czas oczekiwania żądań w kolejce przed ich wykonaniem. To opóźnienie dotyczy wszystkich żądań inicjowanych przez klienta. Łączny czas oczekiwania na żądanie po stronie serwera to w przybliżeniu suma czasu oczekiwania na żądanie i szybkości jego wykonania.
  • Odmowa dostępu: liczba operacji na podanej ś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
Szybkość odczytywania danych Czas odpowiedzi serwera na żądania klienta dotyczące odczytu danych z bazy danych. Czas wykonania odczytu zależy od ilości odczytywanych danych, ale nawet niewielkie odczyty mogą być opóźnione przez wstępne pobieranie do pamięci podręcznej.
Zapisuj dane o szybkości wykonania Czas odpowiedzi serwera na żądania klienta dotyczące zapisywania danych w bazie danych. Czas wykonywania operacji zapisu jest proporcjonalny do ilości zapisywanych danych.
Szybkość wykonania połączenia Czas odpowiedzi serwera na żądania ustanowienia klientów bazy danych. Opóźnienie w przypadku żądań połączenia jest w głównej mierze spowodowane księgowaniem po stronie serwera w pamięci, które jest związane z zarządzaniem połączeniami.
Szybkość wykonania transmisji

Czas potrzebny serwerowi na rozpowszechnienie danych do klientów, którzy nasłuchują danej ścieżki w celu uzyskania aktualizacji w czasie rzeczywistym.

Właściwość Liczba w raporcie Szybkość transmisji zbiorczej agreguje liczbę transmisji, a nie liczbę klientów, którzy otrzymali informacje. Jeśli np. 10 klientów nasłuchuje określonej ścieżki, a serwer wysyła aktualizację do wszystkich 10 klientów, liczba transmisji będzie wynosić 1, mimo że dane otrzyma 10 klientów.

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

Przepustowość

Raport o przepustowości zawiera informacje o tym, ile danych zużywa baza danych w operacjach przychodzących i wychodzących. Nie należy jednak szacować rozliczeń na podstawie raportu Przepustowość, ponieważ nie uwzględnia on przepustowości używanej do innych operacji, takich jak profilowanie bazy danych. Raport Przepustowość w przybliżeniu szacuje rozmiar danych użytych przez operacje odczytu, zapisu i transmisji do i z bazy danych. Jest to narzędzie do pomiaru skuteczności, a nie do prognozowania rozliczeń.

Raport o przepustowości zawiera te usługi:

  • Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły operacje. Jeśli jest ich więcej niż 25, narzędzie do profilowania łączy je w ścieżkę nadrzędną.

  • Łącznie:łączna liczba bajtów wychodzących i przyjmowanych w ramach wszystkich operacji na danej ścieżce.

  • Liczba: liczba operacji wykonanych na danej ścieżce.

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

Raport o przepustowości
Pobrane bajty dane zużywane przez operacje odczytu i transmisji wysyłane za pomocą klienta SDK i interfejsu REST API;
Przesłane bajty Dane zużywane przez żądania zapisu przychodzące na serwer bazy danych. Usunięcia są wyświetlane jako zapisy z 0 bajtami w przypadku danych przychodzących.

Zapytania niezaindeksowane

Zapytania nieindeksowane mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w danej lokalizacji, a następnie wykonują na nich zapytania. Spowoduje to wykorzystanie większej przepustowości niż to konieczne. Rozwiąż jak najwięcej zapytań nieprzetworzonych, aby zoptymalizować wydajność bazy danych.

Raport Zapytania niezindeksowane zawiera te właściwości:

  • Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły niezaindeksowane zapytania.
  • Indeksowanie: reguła, którą należy dodać, aby rozwiązać problem z niezaindeksowanymi zapytaniami. Dowiedz się więcej o indeksowaniu w artykule Indeksowanie danych.
  • Liczba: liczba nieprzetworzonych zapytań, które wystąpiły na danej ścieżce.

Zaawansowane profilowanie

Aby zobaczyć wszystkie operacje wykonywane przez bazę danych, użyj flagi --raw podczas profilowania bazy danych w ten sposób:

firebase database:profile --raw

Dane wyjściowe w postaci tekstu zawierają też informacje o kliencie dotyczące każdej operacji, takie jak ciągi znaków userAgent i adresy IP. Więcej informacji o różnych operacjach profilowanych w Twoim Firebase Realtime Database znajdziesz w sekcji Firebase Realtime Database Typy operacji.

Narzędzie profilowania: nie jest narzędziem do rozliczeń.

Nie używaj narzędzia profilującego do szacowania kosztów przepustowości. Narzędzie profilujące ma na celu dostarczyć Ci ogólnego obrazu wydajności bazy danych, aby pomóc Ci w monitorowaniu operacji i rozwiązywaniu problemów, a nie do szacowania rozliczeń. Nie uwzględnia on ruchu sieciowego, a tylko rejestruje szacunkowe dane aplikacji wysyłane w odpowiedziach.

Oto kilka typowych przykładów ruchu w sieci naliczanego przez Firebase, które nie są objęte profilem bazy danych:

  • Nakłady związane z protokołem: aby ustanowić i utrzymywać sesję, potrzebny jest dodatkowy ruch między serwerem a klientami. W zależności od podstawowego protokołu ten ruch może obejmować: opóźnienia związane z protokołem czasu rzeczywistego Firebase Realtime Database, opóźnienia związane z WebSocket i opóźnienia związane z nagłówkiem HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten koszt wraz z kosztami szyfrowania SSL przyczynia się do zwiększenia kosztów połączenia. Chociaż zwykle nie jest to duża ilość przepustowości, może być znacząca, jeśli ładunki są małe lub jeśli często nawiązujesz krótkie połączenia.
  • Nakłady związane z szyfrowaniem SSL: koszty związane z szyfrowaniem SSL niezbędnym do bezpiecznych połączeń. Średnio koszt ten wynosi około 3,5 KB na początkowe uściski dłoni i około 40 B na nagłówki rekordów TLS w każdej wysyłanej wiadomości. W przypadku większości aplikacji jest to niewielki odsetek rachunku. Może to jednak prowadzić do znacznego wzrostu procentowego, jeśli w Twoim przypadku wymagane jest wiele sesji SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby inicjowania połączeń SSL.

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