Profiluj swoją bazę danych

Mierz wydajność swojej Bazy danych czasu rzeczywistego Firebase za pomocą narzędzia do profilowania bazy danych dostępnym w interfejsie wiersza poleceń Firebase. Narzędzie do profilowania rejestruje wszystkie aktywności w bazie danych w danym okresie, a potem generuje szczegółowego raportu. Za pomocą szczegółowego raportu można rozwiązać problemy ze w zakresie wydajności baz danych, wykrywania obszarów problematycznych i zmniejszania liczby zapytań niezindeksowanych.

Utwórz profil

  1. Zanim zaczniesz profilować Bazę danych czasu rzeczywistego Firebase, sprawdź, czy korzystasz najnowszą wersję interfejsu wiersza poleceń Firebase, została zainicjowana dla bazy danych i projektu, który chcesz profilować. Notatka aby profilować, musisz być edytującym lub właścicielem tego projektu.

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

    firebase database:profile
    Program profilujący wyświetla komunikat o stanie w trakcie rejestrowania operacji do bazy danych i tworzy profil.

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

Interpretowanie wyników

Narzędzie do profilowania agreguje zebrane dane o bazie 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 typ operacji. Jednak prędkość zmierzona w raporcie dotyczącym prędkości może nie być jak bardzo wpływają na wygodę użytkowników. Różne czynniki, w tym warunki sieciowe, mogą zwiększyć opóźnienie po stronie klienta.

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

  • Ścieżka: ścieżka w bazie danych, na której miały miejsce operacje. Jeśli jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie do profilowania zwija je w ścieżki nadrzędnej i dodaje znacznik $wildcard. Możesz zobaczyć adresy URL bazy danych katalogu głównym w raporcie reprezentowany ukośnikiem /.
  • Liczba: liczba operacji, które miały miejsce na danej ścieżce.
  • Średnia szybkość wykonywania: średni czas wykonywania działania przez serwer. logikę biznesową niezbędną do obsługi konkretnego typu operacji na tej ścieżce. Przedział czasu mierzony w tym miejscu zaczyna się po tym okresie mierzonym za pomocą opcji „Średnia Czas oczekiwania” opisane poniżej.
  • Średni czas oczekiwania:średni czas spędzony w kolejce żądań przed zostanie wykonane. Jest ono wspólne dla wszystkich żądań zainicjowanych przez klienta. łączny czas oczekiwania na żądanie po stronie serwera jest mniej więcej sumą wartości czas oczekiwania i szybkość wykonywania zadań. .
  • Odmowa dostępu: liczba operacji na danym ścieżki, które zostały zablokowane przez Reguły bazy danych Firebase w swojej bazie danych.
Raport dotyczący szybkości według typu operacji
Odczytuj szybkość wykonywania Czas odpowiedzi serwera na żądania klientów odczytu danych z w bazie danych. Czas wykonywania odczytu zwykle skaluje się odpowiednio do ilości danych odczytywane, ale nawet niektóre niewielkie odczyty mogą być opóźnione przez pamięć podręczną pobierania z wyprzedzeniem.
Szybkość wykonywania zapisu Czas odpowiedzi serwera na żądania klientów dotyczące zapisu danych w w bazie danych. Czas wykonywania zapisu skaluje się odpowiednio do ilości przesyłanych danych napisane.
Szybkość wykonywania połączenia Czas odpowiedzi serwera na żądania wysyłane do klientów bazy danych. Czas oczekiwania na żądania połączenia jest zdominowany przez pamięć podręczną po stronie serwera księgowość związana z zarządzaniem połączeniami.
Szybkość wykonywania transmisji

Czas potrzebny serwerowi na rozpowszechnianie danych klientom nasłuchiwanie podanej ścieżki w celu otrzymywania aktualizacji w czasie rzeczywistym.

Właściwość Count w parametrze Raport o szybkości transmisji zbiera dane o liczbie przeprowadzonych transmisji, a nie liczbę klientów, którzy otrzymali te informacje. Na przykład, jeśli 10 klientów Nasłuchiwały na danej ścieżce i serwer przesłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko jedną transmisję, mimo że 10 klientów odebrali dane.

Właściwość Odmowa dostępu nie jest uwzględniona w Raport Szybkość transmisji

Przepustowość

Raport dotyczący przepustowości dostarcza informacji o ilości danych zużywanych przez bazę danych w operacjach przychodzących i wychodzących. Nie zalecamy korzystania z parametru Przepustowość Raport, który pozwoli oszacować płatności, ponieważ nie uwzględnia on wykorzystywanej przepustowości do innych operacji, takich jak profilowanie bazy danych. Raport Przepustowość pozwala w przybliżeniu oszacować rozmiar ładunku danych używanych przez operacje odczytu, zapisu i transmisji do i z bazy danych. Jest to narzędzie do pomiaru skuteczności, a nie narzędzia do prognozowania płatności.

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

  • Ścieżka: ścieżka w bazie danych, na której miały miejsce operacje. Jeśli jeśli dostępnych jest więcej niż 25 węzłów podrzędnych, narzędzie do profilowania zwija je ścieżki nadrzędnej.

  • Łącznie: łączna liczba bajtów wychodzących lub przychodzących używanych 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 operacji na danej ścieżce (bajty/zapis lub bajty/odczyt).

Raport dotyczący przepustowości
Pobrane bajty Dane wykorzystywane w ramach operacji odczytu i transmisji wysyłanych przez klienta Pakiety SDK i interfejs API typu REST.
Przesłane bajty Dane wykorzystywane przez żądania zapisu wysyłane do serwera bazy danych. Usunięcia są wyświetlane jako zapisy z przychodzącym 0 bajtów.

Zapytania niezindeksowane

Zapytania niezindeksowane mogą być kosztowne, ponieważ klienty pobierają wszystkie dane w i wykonywać na niej zapytania. Zużywa to więcej przepustowości niż niezbędną. Rozwiąż jak najwięcej niezindeksowanych zapytań, aby zoptymalizować i wydajność bazy danych.

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

  • Ścieżka: ścieżka w bazie danych, w której pojawiły się niezindeksowane zapytania.
  • Indeks:reguła, którą należy dodać, aby rozwiązywać niezindeksowane zapytania. Ucz się więcej informacji o indeksowaniu znajdziesz w artykule Indeksowanie danych.
  • Liczba: liczba niezindeksowanych zapytań, które wystąpiły na danej ścieżce.

Profilowanie zaawansowane

Aby wyświetlić wszystkie operacje obsługiwane przez Twoją bazę danych, użyj funkcji --raw podczas profilowania bazy danych w ten sposób:

firebase database:profile --raw

Nieprzetworzone dane wyjściowe zawierają też informacje o kliencie dotyczące każdej operacji, takie jak: userAgent ciągi i adresy IP. Więcej informacji o różnych operacjach w Bazie danych czasu rzeczywistego Firebase w sekcji Typy operacji w bazie danych czasu rzeczywistego Firebase.

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 dać ogólny obraz wydajności bazy danych, monitorować operacje i rozwiązywać problemy, a nie szacować wysokość opłat. it nie uwzględnia ruchu w sieci, ale rejestruje jedynie oraz wysyłanie danych o aplikacji w odpowiedziach.

Oto kilka typowych przykładów ruchu w sieci rozliczanego przez Firebase. , które nie zostały uwzględnione w profilu bazy danych:

  • Narzut protokołu: część dodatkowego ruchu między serwerem a klientami. jest niezbędna do utworzenia i utrzymania sesji. W zależności od źródła , ruch ten może obejmować: Bazę danych czasu rzeczywistego Firebase (Realtime Database) narzut protokołu, narzut WebSocket i nagłówek HTTP. Za każdym razem, gdy nawiązano połączenie, ten narzut połączony z szyfrowaniem SSL wpływa na koszty połączeń. Mimo że zwykle nie jest to przy dużej przepustowości, przy niewielkich ładunkach może to być znaczne lub nawiązujesz częste, krótkie kontakty.
  • Narzut szyfrowania SSL: korzystanie z SSL wiąże się z pewnymi kosztami. nakładu szyfrowania wymaganych do obsługi bezpiecznych połączeń. Średni koszt to około 3, 5 KB podczas początkowego uzgadniania połączenia i około 40 B w przypadku Nagłówki rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to procent rachunku. Może to być jednak duży odsetek, jeśli Twoja sprawa wymaga wielu uzgadniania połączenia SSL. Na przykład urządzenia , które nie obsługują zgłoszeń na sesję TLS, mogą wymagać dużej liczby połączeń SSL uzgadniania połączenia.

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