Profiluj swoją bazę danych

Mierz wydajność instancji Firebase Realtime Database za pomocą narzędzia do profilowania bazy danych wbudowane w interfejs wiersza poleceń Firebase. Narzędzie do profilowania rejestruje wszystkie aktywności w bazie danych w danym okresie, a potem generuje szczegółowego raportu. Korzystaj z szczegółowego raportu, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać obszary problemowe i zmniejszać liczbę niezaindeksowanych zapytań.

Utwórz profil

  1. Zanim zaczniesz profilować Firebase Realtime Database, upewnij się, że używasz najnowszej wersji interfejsu wiersza poleceń Firebase i że została ona zainicjowana 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
    Program profilujący wyświetla komunikat o stanie w trakcie rejestrowania operacji i tworzy profil.

  3. Naciśnij Enter, aby wypeł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. 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 warunki sieciowe, mogą zwiększyć opóźnienie po stronie klienta.

Raport Szybkość zawiera te usługi:

  • Ścieżka: ścieżka w bazie danych, na której miały miejsce operacje. Jeśli jest ich więcej niż 25, narzędzie do profilowania łą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, jaki zajmuje serwerowi wykonanie logiki biznesowej potrzebnej do obsługi określonego 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 oczekiwania żądań w kolejce przed zostanie wykonane. To opóźnienie dotyczy wszystkich żądań inicjowanych przez klienta. Całkowity 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 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
Szybkość odczytu Czas odpowiedzi serwera na żądania klienta dotyczące odczytu danych z bazy danych. Czas wykonywania odczytu zwykle skaluje się wraz z ilością danych odczytywane, ale nawet niektóre niewielkie odczyty mogą być opóźnione przez pamięć podręczną pobierania z wyprzedzeniem.
Szybkość 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 w głównej mierze związany z obsługą na serwerze w pamięci operacyjnej i z zarządzaniem połączeniami.
Szybkość wykonywania 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 zawiera zagregowaną liczbę transmisji, a nie liczbę klientów, którzy otrzymali 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ę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 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 Prędkość transmisji danych zawiera te usługi:

  • Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły 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 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 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 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 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ą. Aby zoptymalizować wydajność bazy danych, rozwiązuj jak najwięcej zapytań nieprzetworzonych.

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.
  • Indeks:reguła, którą należy dodać, aby rozwiązywać niezindeksowane zapytania. Dowiedz się więcej o indeksowaniu w artykule Indeksowanie danych.
  • Liczba: liczba nieindeksowanych zapytań, które wystąpiły na danej ścieżce.

Zaawansowane profilowanie

Aby zobaczyć wszystkie operacje wykonywane przez Twoją bazę danych, podczas profilowania bazy danych użyj flagi --raw 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. Dowiedz się więcej o różnych operacjach profilowanych w Twoim Firebase Realtime Database 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 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:

  • 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 ź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 mały 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ą biletów sesji TLS, mogą wymagać dużej liczby sesji SSL.

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