Profilowanie bazy danych

Mierz wydajność swojej 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. Raport szczegółowy pozwala rozwiązywać problemy z wydajnością bazy danych, znajdować problematyczne obszary i ograniczać liczbę zapytań niezindeksowanych.

Utwórz profil

  1. Zanim zaczniesz profilować Bazę danych czasu rzeczywistego Firebase, sprawdź, czy korzystasz z najnowszej wersji interfejsu wiersza poleceń Firebase i czy została ona zainicjowana dla bazy danych i projektu, który chcesz profilować. Pamiętaj, że aby profilować, musisz być edytorem lub właścicielem projektu.

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

    firebase database:profile
    Program profilujący wyświetli komunikat o stanie podczas rejestrowania operacji w bazie danych i kompilowania profilu.

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

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. Prędkość mierzona w raporcie dotyczącym szybkości może jednak nie odzwierciedlać w rzeczywistości szybkości działania użytkowników. Różne czynniki, w tym warunki sieciowe, mogą zwiększać czas oczekiwania 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 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 miały miejsce 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. Przedział czasu mierzony w tym miejscu rozpoczyna się po tym czasie mierzonym jako „Średni czas oczekiwania” opisany poniżej.
  • Średni czas oczekiwania: średni czas, jaki żądania spędzają w kolejce przed ich wykonaniem. Jest ono wspólne dla wszystkich żądań zainicjowanych przez klienta. Łączny czas oczekiwania na żądanie po stronie serwera jest przybliżoną sumą czasu oczekiwania na żądanie i szybkości jego wykonywania.
  • Odmowa dostępu: liczba operacji w danej ś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
Odczytuj szybkość wykonywania Czas odpowiedzi serwera na żądania klientów odczytujące dane z bazy danych. Czas wykonywania odczytu zwykle skaluje się wraz z ilością odczytywanych danych, ale nawet niektóre niewielkie odczyty mogą być opóźnione przez wstępne pobieranie z pamięci podręcznej.
Szybkość wykonywania zapisu Czas odpowiedzi serwera na żądania klientów dotyczące zapisu danych w bazie danych. Czas wykonywania zapisu skaluje się odpowiednio do ilości zapisywanych danych.
Szybkość wykonywania połączenia Czas odpowiedzi serwera na żądania wysyłane do klientów bazy danych. Czas oczekiwania na połączenie jest zdominowany przez księgowanie po stronie serwera w pamięci związane z zarządzaniem połączeniami.
Szybkość wykonywania transmisji

Czas potrzebny serwerowi na dystrybuowanie danych wśród klientów nasłuchujących danej ścieżki aktualizacji w czasie rzeczywistym.

Właściwość Liczba w raporcie o szybkości transmisji zbiera liczbę przeprowadzonych transmisji, a nie liczbę klientów, którzy otrzymali informacje. Jeśli na przykład 10 klientów nasłuchowało w danej ścieżce, a serwer przesłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko jedną transmisję, mimo że 10 klientów otrzymało dane.

W raporcie Szybkość transmisji nie ma właściwości Odmowa dostępu.

Przepustowość

Raport dotyczący przepustowości zapewnia wgląd w ilość danych zużywanych przez bazę danych w ramach operacji przychodzących i wychodzących. Raportu dotyczącego przepustowości nie należy jednak używać do szacowania płatności, ponieważ nie uwzględnia on przepustowości wykorzystywanej na potrzeby innych operacji, takich jak profilowanie bazy danych. Raport dotyczący przepustowości podaje w przybliżeniu rozmiar ładunku danych wykorzystywanych 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 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 miały miejsce na danej ścieżce.

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

Raport dotyczący przepustowości
Pobrane bajty Dane wykorzystywane w operacjach odczytu i transmisji wysyłanych za pomocą pakietów SDK klienta i interfejsu API 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 z danej lokalizacji, a następnie wykonują na nich zapytania. Zużywa to więcej przepustowości niż jest to konieczne. Rozwiąż jak najwięcej niezindeksowanych zapytań, aby zoptymalizować 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. 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 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, np. ciągi tekstowe userAgent i adresy IP. Dowiedz się więcej o różnych operacjach profilowanych w Bazie danych czasu rzeczywistego Firebase w artykule 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 zapewniać ogólny obraz wydajności bazy danych, ułatwiając monitorowanie operacji i rozwiązywanie problemów, a nie szacowanie płatności. Nie uwzględnia ruchu w sieci, rejestruje tylko szacunkowe dane aplikacji wysyłane w odpowiedziach.

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

  • Narzut protokołu: do utworzenia i utrzymania sesji konieczny jest dodatkowy ruch między serwerem a klientami. W zależności od bazowego protokołu ruch ten może obejmować: narzut protokołu do Bazy danych czasu rzeczywistego Firebase, narzut WebSocket i narzut nagłówka HTTP. Przy każdorazowym ustanowieniu połączenia ten narzut, w połączeniu z narzutem na szyfrowanie SSL, zwiększa koszty połączenia. Zwykle nie jest to duża przepustowość, ale może być znaczna, jeśli Twoje ładunki są niewielkie lub często nawiązujesz krótkie, krótkie połączenia.
  • Narzuty związane z szyfrowaniem SSL: związane z szyfrowaniem SSL wiążą się z kosztami. Średni koszt to około 3,5 KB w przypadku początkowego uzgadniania połączenia i około 40 B w przypadku nagłówków rekordów TLS każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent rachunku. Może to się jednak okazać znaczny odsetek, jeśli Twój przypadek wymaga dużej liczby uzgadniania połączenia SSL. Na przykład urządzenia, które nie obsługują zgłoszeń na sesję TLS, mogą wymagać dużej liczby uzgadniania połączenia SSL.

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