2016-09-12 13 views
10

Moja aplikacja rośnie pod względem wykorzystania przepustowości w bazie danych Firebase i staram się zoptymalizować moje zapytania, aby zużywać mniej przepustowości (co zmniejsza koszty), ale robię to na ślepo ponieważ nie ma statystyk dotyczących mojego użycia bazy danych (nie wiem, które zapytania pobierają największą przepustowość).Dowiedz się, skąd pochodzi wykorzystanie przepustowości bazy danych Firebase

Czy jest jakiś sposób, aby dowiedzieć się, które zapytania przynoszą dużo przepustowości? W jaki sposób optymalizujesz wykorzystanie bazy danych Firebase?

Edit:

Mam internetowej czat i używam obserwatorów takich jak messagesRef.child(conversationID).limitToLast(25).on('child_‌​added'... conversationsRef.child(conversationID).('participants').on('value'...

+0

Jak obserwujesz swoje węzły w DB? Wolisz 'observeSingleEventOfType' na' observeEventType', ponieważ kończy się po pierwszym wyszukiwaniu i usuń obserwatorów, gdy tylko jest to możliwe. – Dravidian

+0

Niestety nie, to pokazuje ogólnie. Czy możesz opublikować część swoich zapytań? –

Odpowiedz

0

Profil Firebase Profiler uratował mi życie za to. https://firebase.google.com/docs/database/usage/profile

Był w stanie dokładnie określić, co odniesienie (w tym dzieci) było hogging przepustowości, co znacznie ułatwiło dowiedzieć się, która część kodu jest problematyczne.

3

nie ma żadnych narzędzi strojenia zapytań, jeśli to, co szukasz. można zbudować proste rejestrowanie czasu w celu przechwytywania tuż przed i po wydaniu zapytań, rejestrować te dane i pobierać je od klienta, aby zawęzić je do najbardziej nierentownych.

trudno uzyskać pomoc, nie widząc faktycznych zapytań ani modelu danych.

+0

bardzo zgodził się z Tobą ZagNut. Rejestrowanie kończenia zapytań na "then()" pomoże ci Dany. – devprashant

0

Tylko w przypadku, gdy nie używasz już Firebase .indexOn() ... co jest najlepszym sposobem na poprawę wydajności (tak mówią poniżej), spójrz na Index Your Data. Firebase faceci mówią:

Jeśli wiesz z góry, co indeksów będzie można je zdefiniować poprzez reguły .indexOn w regułach Firebase Realtime bazy danych do poprawić wydajność kwerendy.

0

wysoce uzgodnione z ZagNut odpowiedź.

Rejestracja zapytań na "wtedy()" pomoże ci tutaj.

można utrzymać liczbę zapytań na żądanie węzła na stronie klienta i zapisać, że licznik żądania przez ID klienta w osobnym węźle od swojej struktury danych na Firebase bazie.

Teraz filtruj te zapytania, aby znaleźć wzorce użycia.

Dzięki.