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

Cette page 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 la liste d'objets:

  • Dans les buckets avec un espace de noms hiérarchique activé, la liste de tous les objets pour l'ensemble du bucket ou avec un préfixe est gourmande en 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 la liste des objets. Pour éviter d'affecter négativement les performances, nous vous recommandons de maximiser le nombre d'objets dans chaque dossier et de supprimer régulièrement les dossiers vides.
  • La liste ou la récupération d'objets et de sous-dossiers dans un dossier spécifique à l'aide d'un séparateur et d'un préfixe spécifique est plus efficace dans les buckets avec un espace de noms hiérarchique activé, car les objets sont organisés dans une structure de dossiers. Pour optimiser les performances des fiches lorsque vous utilisez un séparateur 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 d'objets, consultez Liste d'objets.

Gestion des dossiers

Pour une gestion efficace des dossiers, nous vous recommandons de suivre les conseils suivants:

  • Créez à l'avance 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 dossier pour obtenir à l'avance la structure de dossiers souhaitée. La précréation de la structure de dossiers améliore la cohérence et la prévisibilité des performances.
  • Maximiser le ratio d'objets par dossier:visez un ratio élevé d'objets par dossier, car il réduit les coûts liés à la création et à la gestion des dossiers.
  • Limitez les requêtes de création et de suppression de dossiers:la création ou la suppression de dossiers est plus gourmande en ressources que le travail avec des 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 requêtes dépassant cette limite ne sont pas explicitement limitées, 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. Les dossiers cumulés peuvent avoir un impact sur les performances de l'opération de création de listes d'objets et d'autres opérations liées aux dossiers. Voici quelques méthodes que vous pouvez utiliser pour supprimer des 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 des dossiers lorsque vous utilisez la console Google Cloud ou la Google Cloud CLI.
    • Vous pouvez utiliser un script ou un processus automatisé pour supprimer périodiquement 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. En outre, le script supprime tous les dossiers vides (créés implicitement ou explicitement), y compris les dossiers gérés et les stratégies 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
      

Étape suivante