Cette page vous explique comment résoudre les problèmes liés à Firestore en mode Datastore.
Latence
Le tableau ci-dessous décrit les causes possibles de l'augmentation de la latence :
Cause de la latence | Types d'opérations concernés | Solution |
---|---|---|
Trafic soutenu dépassant la règle 500-50-5 | lecture, écriture (read, write) |
Pour augmenter le trafic rapidement, le mode Datastore tente d'effectuer un scaling automatique afin de répondre à l'accroissement de la demande. Lorsque le mode Datastore évolue, la latence commence à diminuer. Points d'accès (taux élevés de lecture, d'écriture et de suppression pour une plage d'entités étroite) limiter les capacités de scaling du mode Datastore. Consultez la page Concevoir des solutions évolutives et identifiez les hotspots dans votre application. |
Contention imputable à la mise à jour trop fréquente d'une seule entité ou à des transactions | lecture, écriture (read, write) |
Réduisez le taux d'écriture pour des entités individuelles. Examiner l'isolation et la cohérence des transactions. et la façon dont vous utilisez les transactions. |
Requêtes de jointure par fusion lentes | lecture (read) |
Par exemple, les requêtes comportant plusieurs filtres d'égalité (== ) mais ne s'appuyant pas sur des index composites peuvent ralentir les requêtes de jointure par fusion.
Pour améliorer les performances, ajoutez des index composites pour ces requêtes. Consultez la section Optimiser les index.
|
Lectures volumineuses renvoyant de nombreuses entités | read | Utilisez Curseurs de requêtes pour diviser les lectures volumineuses. |
Trop de suppressions récentes | read Cela a un impact considérable sur les opérations qui répertorient les types d'une base de données. |
Si la latence est causée par un nombre trop élevé de suppressions récentes, le problème devrait se résoudre automatiquement après un certain temps. Si le problème persiste, contactez l'assistance. |
Distribution ramifiée d'index, en particulier pour les propriétés de tableau | write | Consultez les index explosifs et votre utilisation des propriétés de tableau. |
Codes d'erreur
Cette section répertorie les problèmes que vous pouvez rencontrer et fournit des suggestions pour les résoudre.
DEADLINE_EXCEEDED
DEADLINE_EXCEEDED A deadline was exceeded on the server.
Pour résoudre ce problème, consultez le guide de résolution des problèmes de latence.
ABORTED
Les situations suivantes peuvent provoquer un nombre plus important d'erreurs ABORTED
:
- Une entité recevant trop de mises à jour par seconde.
- Contention imputable aux transactions qui se chevauchent
- Augmentation du trafic dépassant la règle des 500-50-5 ou présence de hotspots
ABORTED Too much contention on these datastore entities. Please try again.
Ou
ABORTED Aborted due to cross-transaction contention. This occurs when multiple transactions attempt to access the same data, requiring Datastore mode to abort at least one in order to enforce serializability.
Pour remédier à ce problème :
- Pour augmenter le trafic rapidement, le mode Datastore tente d'effectuer un scaling automatique afin de répondre à l'accroissement de la demande. Lorsque le mode Datastore effectue un scaling, la latence diminue.
- Les hotspots limitent la capacité du mode Datastore à évoluer à la hausse. Consultez la page Concevoir des solutions évolutives pour identifier les hotspots.
- Examinez la contention des données dans les transactions et votre utilisation des transactions.
- Réduisez le taux d'écriture pour des entités individuelles.
RESOURCE_EXHAUSTED
Les situations suivantes peuvent provoquer des erreurs RESOURCE_EXHAUSTED
:
Vous avez dépassé le quota sans frais et la facturation n'est pas activée pour votre projet.
RESOURCE_EXHAUSTED Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.
Pour remédier à ce problème :
- Attendez la réinitialisation quotidienne de votre quota de version gratuite ou activez la facturation pour votre projet.
INVALID_ARGUMENT
Les situations suivantes peuvent entraîner des erreurs INVALID_ARGUMENT
:
- Tentative d'enregistrement d'une entité avec une valeur de propriété indexée supérieure à 1 500 octets. Cette limite s'applique au codage UTF-8 de la valeur de la propriété.
- Tentative de commit d'une entité dont les valeurs de propriété non indexées sont supérieures que 1 048 487 octets (1 Mio – 89 octets). Cette limite s'applique à la somme des valeurs de propriété d'une entité. Par exemple, quatre propriétés de 256 Kio chacun dépasse la limite.
1 500 octets (indexés) et 1 048 487 octets (non indexés) sont les limites des valeurs de propriété. Vous ne pouvez pas dépasser ces limites, et ce ne sont pas des quotas que vous pouvez ajuster.
INVALID_ARGUMENT: The value of property property-name is longer than 1500 bytes
ou
INVALID_ARGUMENT: The value of property property_name is longer than 1048487 bytes
Pour remédier à ce problème :
- Pour les valeurs de propriété indexées, divisez la propriété en plusieurs propriétés. Si possible, créez une propriété non indexée et déplacer les données qui n'ont pas besoin d'être indexées dans le dossier .
- Pour les valeurs de propriété non indexées, divisez la propriété en plusieurs propriétés ou implémentez une compression pour la valeur de la propriété.