Profilowanie bazy danych

Mierz wydajność Bazy danych czasu rzeczywistego Firebase za pomocą narzędzia do profilowania baz danych wbudowanego w interfejs wiersza poleceń Firebase. Narzędzie do profilowania 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, znajdować obszary powodujące problemy i zmniejszać liczbę niezindeksowanych zapytań.

Utwórz profil

  1. Zanim zaczniesz profilować bazę danych czasu rzeczywistego Firebase, sprawdź, czy używasz najnowszej wersji interfejsu wiersza poleceń Firebase i czy została ona zainicjowana dla bazy danych i projektu, które chcesz profilować. Aby profilować, musisz mieć uprawnienia edytującego lub właściciela tego projektu.

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

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

  3. Aby uzupełnić profil i wyświetlić wyniki, naciśnij Enter.

Interpretowanie wyników

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

Szybkość

Raport dotyczący szybkości mierzy czas odpowiedzi serwera (w milisekundach) dla każdego typu operacji. Jednak szybkość zmierzona w raporcie dotyczącym szybkości może nie odzwierciedlać rzeczywistej szybkości działania. Różne czynniki, w tym warunki sieciowe, mogą wydłużać czas oczekiwania po stronie klienta.

Raport dotyczący szybkości zawiera te właściwości:

  • Ścieżka: ścieżka w bazie danych, w której wystąpiły operacje. Jeśli jest więcej niż 25 węzłów podrzędnych, narzędzie do profilowania zwija je w ścieżkę nadrzędną i dodaje znacznik $wildcard. W raporcie może pojawić się katalog główny bazy danych oznaczony ukośnikiem /.
  • Liczba: liczba operacji, które wystąpiły na danej ścieżce.
  • Średnia szybkość wykonywania: średni czas potrzebny serwerowi na wykonanie logiki biznesowej niezbędnej do obsługi konkretnego typu operacji na danej ścieżce. Zmierzony w tym miejscu przedział czasu rozpoczyna się po upływie zgodnie z wartością „Średni czas oczekiwania” opisanym poniżej.
  • Średni czas oczekiwania:średni czas, przez jaki żądania były w kolejce przed wykonaniem. Opóźnienie to jest typowe dla wszystkich żądań inicjowanych przez klienta. Całkowity czas oczekiwania na żądanie po stronie serwera jest w przybliżeniu sumą czasu oczekiwania na żądanie i szybkości wykonywania tego żądania.
  • Odmowa uprawnień: liczba operacji na danej ścieżce, które zostały zablokowane przez reguły bazy danych Firebase w bazie danych.
Raport dotyczący szybkości według typu operacji
Szybkość wykonywania odczytu Czas odpowiedzi serwera na żądania klienta dotyczące odczytu danych z bazy danych. Czas wykonywania odczytu skaluje się zwykle wraz z ilością odczytywanych danych, ale nawet niewielkie odczyty mogą być opóźnione ze względu na wstępne pobieranie z pamięci podręcznej.
Szybkość wykonywania zapisu Czas odpowiedzi serwera na żądania klienta dotyczące zapisania danych w bazie danych. Czas wykonywania zapisu skaluje się odpowiednio do ilości zapisywanych danych.
Szybkość wykonywania połączenia Czas odpowiedzi serwera na żądania ustanowienia względem klientów baz danych. W czasie oczekiwania na żądania połączenia dominuje rejestrowanie po stronie serwera w pamięci związanej z zarządzaniem połączeniami.
Szybkość wykonywania transmisji

Czas potrzebny serwerowi na dystrybucję danych do klientów słuchających podanej ścieżki na potrzeby aktualizacji w czasie rzeczywistym.

Właściwość Liczba w raporcie szybkości przesyłania przedstawia liczbę przeprowadzonych transmisji, a nie liczbę klientów, którzy otrzymali informacje. Jeśli na przykład nasłuchiwało 10 klientów na danej ścieżce, a serwer rozesłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko 1 transmisję, mimo że dane zostało odebrane 10 klientom.

Właściwość Odmowa dostępu nie jest uwzględniana w raporcie Szybkość transmisji.

Przepustowość

Raport przepustowości zawiera informacje o ilości danych wykorzystywanych przez bazę danych podczas operacji przychodzących i wychodzących. Nie należy jednak używać raportu przepustowości do oszacowania opłat, ponieważ nie uwzględnia on przepustowości wykorzystywanej do innych operacji, takich jak profilowanie bazy danych. Raport przepustowości zawiera w przybliżeniu szacowany rozmiar ładunku danych wykorzystywanych podczas operacji odczytu, zapisu i transmisji do i z bazy danych. To narzędzie do pomiaru skuteczności, a nie do prognozowania płatności.

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 jest więcej niż 25 węzłów podrzędnych, narzędzie do profilowania 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 w danej ścieżce (bajty/zapis lub bajty/odczyt).

Raport dotyczący przepustowości
Pobrane bajty Dane zużywane w ramach operacji odczytu i transmisji wysyłanych za pomocą pakietów SDK klienta i interfejsu API REST.
Przesłane bajty Dane zużywane w ramach żądań zapisu trafiających do serwera bazy danych. Usunięcia są wyświetlane jako zapisy z 0 bajtami pod danymi przychodzącymi.

Zapytania niezindeksowane

Niezindeksowane zapytania mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w danej lokalizacji, a potem wykonują na niej zapytania. Wykorzystuje to większą przepustowość niż jest to konieczne. Rozwiąż jak najwięcej niezindeksowanych zapytań, aby zoptymalizować wydajność bazy danych.

Raport Niezindeksowane 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ć zapytania niezindeksowane. Więcej informacji o indeksowaniu znajdziesz w artykule Indeksowanie danych.
  • Liczba: liczba niezindeksowanych zapytań, które wystąpiły na danej ścieżce.

Zaawansowane profilowanie

Aby wyświetlić wszystkie operacje, które obsługuje Twoja baza danych, użyj flagi --raw podczas profilowania bazy danych w ten sposób:

firebase database:profile --raw

Nieprzetworzone dane wyjściowe zawierają też informacje o kliencie dotyczące poszczególnych operacji, takie jak ciągi tekstowe i adresy IP userAgent. Więcej informacji o różnych operacjach profilowanych w Bazie danych czasu rzeczywistego Firebase znajdziesz w artykule o typach operacji w bazie danych czasu rzeczywistego Firebase.

Narzędzie do profilowania: nie jest narzędziem do płatności

Nie używaj narzędzia do profilowania do szacowania kosztu przepustowości. Narzędzie do profilowania ma zapewnić ogólny obraz wydajności bazy danych i ułatwia monitorowanie operacji i rozwiązywanie problemów, a nie oszacowanie płatności. Nie uwzględnia ruchu sieciowego, a jedynie oszacowanie danych aplikacji wysłanych w odpowiedziach.

Oto kilka typowych przykładów ruchu sieciowego rozliczanego przez Firebase, których nie ma w Twoim profilu bazy danych:

  • Narzut protokołu: do ustanowienia i utrzymania sesji potrzebny jest dodatkowy ruch między serwerem a klientami. W zależności od używanego protokołu ruch może obejmować: narzut protokołu w czasie rzeczywistym w Bazie danych czasu rzeczywistego Firebase, narzut WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten narzut w połączeniu z nakładem pracy związany z szyfrowaniem SSL przyczynia się do wzrostu kosztów połączenia. Przepustowość nie jest zwykle duża, ale może być korzystna, jeśli ładunek jest niewielki lub korzystasz z częstych, krótkich połączeń.
  • Narzuty związane z szyfrowaniem SSL: związane z nimi koszty związane z szyfrowaniem SSL niezbędną do zapewnienia bezpiecznych połączeń. Średni koszt początkowego uzgadniania połączenia to około 3,5 KB i około 40 mld nagłówków rekordu TLS dla każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent rachunku. Ten odsetek może jednak znacznie wzrosnąć, jeśli konkretny przypadek wymaga wielu uzgadniania połączenia SSL. Na przykład urządzenia, które nie obsługują zgłoszeń sesji TLS, mogą wymagać dużej liczby uzgadniania połączenia SSL.

Dowiedz się więcej o interpretowaniu i szacowaniu płatności.