Optimiser les performances dans les buckets avec l'espace de noms hiérarchique activé

Cette page vous explique comment optimiser les performances dans les buckets avec l'espace de noms hiérarchique activé.

Répertorier les objets

Voici les considérations relatives aux performances pour l'affichage des objets :

  • Dans les buckets pour lesquels l'espace de noms hiérarchique est activé, lister tous les objets pour l'ensemble du bucket ou avec un préfixe nécessite beaucoup de ressources, car l'opération doit parcourir chaque dossier et sous-dossier, comme la commande ls -r dans un système de fichiers. Par conséquent, plus votre bucket contient de dossiers, plus le listage des objets est lent. Un grand nombre de dossiers vides peut également avoir un impact négatif sur les performances de listage des objets. Pour éviter toute incidence négative sur les performances, nous vous recommandons de maximiser le nombre d'objets dans chaque dossier et de supprimer régulièrement les dossiers vides.
  • Il est plus efficace de lister ou de récupérer des objets et des sous-dossiers dans un dossier spécifique à l'aide d'un délimiteur et d'un préfixe spécifique dans les buckets pour lesquels l'espace de noms hiérarchique est activé, car les objets sont organisés dans une structure de dossiers. Pour optimiser les performances des annonces lorsque vous utilisez un délimiteur et un préfixe spécifique, définissez le paramètre includeFoldersAsPrefixes. Sinon, Cloud Storage effectue des vérifications supplémentaires pour exclure les dossiers vides, ce qui peut ralentir l'opération. Pour en savoir plus sur l'utilisation de includeFoldersAsPrefixes lors de la liste des objets, consultez Lister des objets.

Gestion des dossiers

Pour gérer efficacement vos dossiers, nous vous recommandons de suivre les conseils suivants :

  • Précréer la structure de dossiers : au lieu de vous fier à la création automatique de dossiers lors des opérations d'importation, de réécriture et de composition d'objets, utilisez l'opération de création de dossiers pour obtenir la structure de dossiers souhaitée à l'avance. La pré-création de la structure de dossiers améliore la cohérence et la prévisibilité des performances.
  • Maximisez le ratio objets/dossiers : visez un ratio objets/dossiers élevé, car cela réduit les frais généraux associés à la création et à la gestion de dossiers.
  • Limitez les demandes de création et de suppression de dossiers : la création ou la suppression de dossiers consomme plus de ressources que l'utilisation d'objets individuels en raison de leur nature hiérarchique. Pour garantir des performances fluides, Cloud Storage limite ces opérations à 1 000 requêtes par seconde pour chaque bucket. Les demandes qui dépassent cette limite ne sont pas explicitement restreintes, mais la disponibilité des ressources détermine si elles peuvent être traitées avec succès.
  • Supprimez régulièrement les dossiers vides : les dossiers vides peuvent s'accumuler, en particulier lorsque vous utilisez la gestion du cycle de vie des objets ou que vous supprimez des objets sans supprimer explicitement leurs dossiers parents. L'accumulation de dossiers peut avoir un impact sur les performances de l'opération de liste d'objets et d'autres opérations liées aux dossiers. Voici quelques-unes des méthodes que vous pouvez utiliser pour supprimer les dossiers vides :

    • Lorsque vous utilisez Cloud Storage FUSE ou le connecteur Cloud Storage pour interagir avec un bucket activé avec un espace de noms hiérarchique, la suppression d'un répertoire supprime le dossier correspondant dans votre bucket.
    • Vous pouvez utiliser une suppression récursive pour supprimer automatiquement les dossiers lorsque vous utilisez la console Google Cloud ou Google Cloud CLI.
    • Vous pouvez utiliser un script ou un processus automatisé pour supprimer régulièrement les dossiers vides. Le script suivant fournit une approche de base pour supprimer les dossiers vides. Le script supprime les dossiers de manière séquentielle, ce qui peut être lent pour les grands buckets. Vous pouvez donc envisager d'optimiser le script pour les environnements de production. De plus, le script supprime tous les dossiers vides (créés de manière implicite ou explicite), y compris les dossiers gérés et leurs règles IAM associées. Si vous devez conserver des dossiers spécifiques et des dossiers gérés, ajustez le script en fonction des ressources que vous souhaitez conserver.

      # List all the folders under <bucket>/<prefix> and export results into
      # folders.txt
      gcloud storage folders list gs://<bucket>/<prefix> | grep storage_url | sed 's/storage_url: //' > folders.txt
      
      # Reverse the folder list and export results into folders-reverse.txt
      sed '1!G;h;$!d' folders.txt > folders-reverse.txt
      
      # Try deleting each folder in the reverse order (to guarantee child
      # folders are deleted before parent folders). This will fail for
      # non-empty folders, so only empty folders will be deleted
      xargs -I{} gcloud storage folders delete "{}" < folders-reverse.txt
      

Étapes suivantes