Leistung in Buckets mit aktiviertem hierarchischen Namespace optimieren

Auf dieser Seite finden Sie Informationen dazu, wie Sie die Leistung in Buckets mit aktiviertem hierarchischen Namespace optimieren können.

Objekte auflisten

Im Folgenden finden Sie die Leistungsaspekte für das Auflisten von Objekten:

  • In Buckets mit aktiviertem hierarchischem Namespace ist das Auflisten aller Objekte für den gesamten Bucket oder mit einem Präfix ressourcenintensiv, da für den Vorgang jeder Ordner und Unterordner durchlaufen werden muss, ähnlich dem ls -r-Befehl in einem Dateisystem. Je mehr Ordner in Ihrem Bucket vorhanden sind, desto langsamer erfolgt die Objektauflistung. Eine große Anzahl leerer Ordner kann sich auch negativ auf die Leistung der Objektliste auswirken. Um die Leistung nicht zu beeinträchtigen, empfehlen wir, die Anzahl der Objekte in jedem Ordner zu maximieren und leere Ordner regelmäßig zu löschen.
  • Das Auflisten oder Abrufen von Objekten und Unterordnern in einem bestimmten Ordner mit einem Trennzeichen und einem bestimmten Präfix ist in Buckets mit aktiviertem hierarchischem Namespace effizienter, da die Objekte in einer Ordnerstruktur organisiert sind. Wenn Sie die Leistung von Listen optimieren möchten, wenn Sie ein Trennzeichen und ein bestimmtes Präfix verwenden, legen Sie den Parameter includeFoldersAsPrefixes fest. Andernfalls führt Cloud Storage zusätzliche Prüfungen durch, um leere Ordner auszuschließen, was den Vorgang verlangsamen kann. Weitere Informationen zur Verwendung von includeFoldersAsPrefixes beim Auflisten von Objekten finden Sie unter Objekte auflisten.

Ordnerverwaltung

Für eine effiziente Ordnerverwaltung empfehlen wir Folgendes:

  • Ordnerstruktur vorab erstellen:Anstatt sich auf die automatische Ordnererstellung beim Hochladen, Überschreiben und Zusammensetzen von Objekten zu verlassen, können Sie die gewünschte Ordnerstruktur vorab mit dem Vorgang zum Erstellen von Ordnern erstellen. Wenn Sie die Ordnerstruktur vorab erstellen, verbessern Sie die Konsistenz und Vorhersagbarkeit der Leistung.
  • Verhältnis von Objekten zu Ordnern maximieren:Achten Sie auf ein hohes Verhältnis von Objekten zu Ordnern, da dies den Aufwand für das Erstellen und Verwalten von Ordnern verringert.
  • Anfragen zum Erstellen und Löschen von Ordnern begrenzen:Das Erstellen oder Löschen von Ordnern ist aufgrund der hierarchischen Struktur ressourcenintensiver als das Arbeiten mit einzelnen Objekten. Um eine reibungslose Leistung zu gewährleisten, beschränkt Cloud Storage diese Vorgänge auf 1.000 Anfragen pro Sekunde für jeden Bucket. Anfragen, die dieses Limit überschreiten, werden nicht explizit eingeschränkt. Ob sie erfolgreich verarbeitet werden können, hängt von der Ressourcenverfügbarkeit ab.
  • Leere Ordner regelmäßig löschen:Leere Ordner können sich ansammeln, insbesondere wenn Sie die Verwaltung des Objektlebenszyklus verwenden oder Objekte löschen, ohne die übergeordneten Ordner explizit zu löschen. Die angesammelten Ordner können sich auf die Leistung des Vorgangs zum Auflisten von Objekten und anderer ordnerbezogener Vorgänge auswirken. Im Folgenden finden Sie einige Methoden, mit denen Sie leere Ordner löschen können:

    • Wenn Sie Cloud Storage FUSE oder den Cloud Storage-Connector verwenden, um mit einem Bucket mit hierarchischem Namespace zu interagieren, wird beim Löschen eines Verzeichnisses der entsprechende Ordner in Ihrem Bucket gelöscht.
    • Sie können Ordner automatisch löschen, indem Sie einen rekursiven Löschvorgang in der Google Cloud Console oder der Google Cloud CLI verwenden.
    • Sie können ein Skript oder einen automatisierten Prozess verwenden, um leere Ordner regelmäßig zu löschen. Das folgende Skript bietet einen einfachen Ansatz zum Löschen leerer Ordner. Das Skript löscht Ordner sequenziell. Das kann bei großen Buckets langsam sein. Daher sollten Sie das Skript für Produktionsumgebungen optimieren. Außerdem werden alle leeren Ordner (implizit oder explizit erstellt), einschließlich verwalteter Ordner und der zugehörigen IAM-Richtlinien, gelöscht. Wenn Sie bestimmte Ordner und verwaltete Ordner beibehalten müssen, passen Sie das Skript entsprechend an.

      # 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
      

Nächste Schritte