Latenzprobleme beheben
Auf dieser Seite wird beschrieben, wie Sie Latenzprobleme mit Firestore beheben.
Latenz
In der folgenden Tabelle werden mögliche Ursachen für erhöhte Latenz beschrieben:
Latenzursache | Arten von betroffenen Vorgängen | Lösung |
---|---|---|
Kontinuierlicher Traffic, der die Regel 500-50-5 überschreitet. | Lese-/Schreibzugriff |
Für schnelle Trafficanstiege versucht Firestore automatisch, die erhöhte Nachfrage zu erfüllen. Wenn Firestore skaliert, verringert sich die Latenz. Hotspots (hohe Lese-, Schreib- und Löschraten für einen kleinen Dokumentbereich) beschränken die Skalierbarkeit von Firestore. Überprüfen Sie das Skalierbares Design und ermitteln Sie Hotspots in Ihrer Anwendung. |
Konflikt, entweder durch zu häufiges Aktualisieren eines einzelnen Dokuments oder durch Transaktionen. | Lese-/Schreibzugriff |
Reduzieren Sie die Schreibrate für einzelne Dokumente. Lesen Sie mehr über die Datenkonflikte in Transaktionen und die Verwendung von Transaktionen. |
Anfragen für langsame Join-Vorgänge. | read |
Beispielsweise können Anfragen mit mehreren Gleichheitsfiltern (== ), die jedoch nicht von zusammengesetzten Indexen unterstützt werden, zu langsamen Join-Anfragen führen.
Um die Leistung zu verbessern, fügen Sie zusammengesetzte Indexe für diese Anfragen hinzu, siehe Grund 3 unter Warum ist meine Firestore-Anfrage langsam?
|
Große Lesevorgänge, die viele Dokumente zurückgeben. | read | Verwenden Sie die Paginierung zum Aufteilen großer Lesevorgänge. |
Zu viele kürzliche Löschvorgänge. | read Dies wirkt sich erheblich auf Vorgänge aus, die Sammlungen in Datenbanken auflisten. |
Wenn die Latenz durch zu viele kürzliche Löschvorgänge verursacht wird, sollte sich das Problem nach einiger Zeit von selbst beheben. Tritt das Problem weiter auf, wenden Sie sich an den Support. |
Listener zu schnell hinzufügen und entfernen. | Echtzeit-Listener-Anfragen | Weitere Informationen finden Sie unter Best Practices für Echtzeitaktualisierungen. |
Große Dokumente oder eine Anfrage mit vielen Ergebnissen überwachen. | Echtzeit-Listener-Anfragen | Weitere Informationen finden Sie unter Best Practices für Echtzeitaktualisierungen |
Index-Fanout, insbesondere für Array- und Kartenfelder. | write | Prüfen Sie Ihre Nutzung von Arrayfeldern und Kartenfeldern Für Kartenfelder können Sie die Indexierung von Unterfeldern deaktivieren. Sie können auch Ausnahmen auf Sammlungsebene verwenden. |
Große Schreibvorgänge und Batch-Schreibvorgänge. | write |
Versuchen Sie, die Anzahl der Schreibvorgänge in jedem Batch-Schreibvorgang zu reduzieren. Batch-Schreibvorgänge sind atomar. Viele Schreibvorgänge in einem einzelnen Batch können Latenz und Konflikte erhöhen. Beispiel: Ein Batch von 10 Schreibvorgängen ist besser als ein Batch von 500 Schreibvorgängen. Verwenden Sie für die Bulk-Dateneingabe, für die Sie keine Atomarität benötigen, eine Server-Clientbibliothek mit parallelisierten einzelnen Schreibvorgängen. Batch-Schreibvorgänge erzielen eine bessere Leistung als serialisierte Schreibvorgänge, sind jedoch nicht besser als parallele Schreibvorgänge. |