Leistung in Buckets mit aktiviertem hierarchischen Namespace optimieren

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

Objekte auflisten

Die folgenden Leistungsaspekte gelten für Listenobjekte:

  • In Buckets mit aktiviertem hierarchischem Namespace ist das Auflisten aller Objekte für den gesamten Bucket oder mit einem Präfix ressourcenintensiv, da der Vorgang jeden Ordner und Unterordner durchsuchen muss, ähnlich wie beim Befehl ls -r in einem Dateisystem. Je mehr Ordner sich in Ihrem Bucket befinden, desto langsamer ist die Objektauflistung. Eine große Anzahl leerer Ordner kann sich ebenfalls negativ auf die Leistung des Objektverzeichnisses auswirken. Um negative Auswirkungen auf die Leistung zu vermeiden, empfehlen wir, die Anzahl der Objekte in jedem Ordner zu maximieren und leere Ordner regelmäßig zu löschen.
  • In Buckets mit aktiviertem hierarchischem Namespace ist es effizienter, Objekte und Unterordner in einem bestimmten Ordner mit einem Trennzeichen und einem bestimmten Präfix aufzulisten oder abzurufen, da die Objekte in einer Ordnerstruktur organisiert sind. Wenn Sie die Leistung von Einträgen bei Verwendung eines Trennzeichens und eines bestimmten Präfixes optimieren möchten, 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 Objektupload, ‑überschreiben und ‑erstellen zu verlassen, können Sie mit dem Befehl „Ordner erstellen“ die gewünschte Ordnerstruktur vorab erstellen. Wenn Sie die Ordnerstruktur vorab erstellen, wird die Leistungskonsistenz und -vorhersagbarkeit verbessert.
  • Maximieren Sie das Verhältnis von Objekten zu Ordnern:Ein hohes Verhältnis von Objekten zu Ordnern reduziert den Overhead, der mit dem Erstellen und Verwalten von Ordnern verbunden ist.
  • Anfragen zum Erstellen und Löschen von Ordnern begrenzen:Das Erstellen oder Löschen von Ordnern ist aufgrund ihrer hierarchischen Struktur ressourcenintensiver als die Arbeit mit einzelnen Objekten. Um eine reibungslose Leistung zu gewährleisten, werden diese Vorgänge in Cloud Storage auf 1.000 Anfragen pro Sekunde für jeden Bucket begrenzt. Anfragen, die dieses Limit überschreiten, sind nicht ausdrücklich eingeschränkt. Ob sie erfolgreich verarbeitet werden können, hängt jedoch von der Verfügbarkeit der Ressourcen 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 von Objektlisten und anderen Ordner-bezogenen Vorgängen auswirken. Es gibt verschiedene Möglichkeiten, leere Ordner zu löschen:

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

      # 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