Datenbankleistung mit dem Datenträger-Cache beschleunigen

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie das Laufwerk-Caching in AlloyDB Omni bereitstellen, einrichten und verwenden, um die Leistung Ihrer AlloyDB Omni-Installation zu steigern.

Zusätzlich zu den standardmäßigen gemeinsam genutzten In-Memory-Puffern von PostgreSQL ermöglicht der AlloyDB Omni-Festplatten-Cache das Speichern von Puffern auf schnellen Speichermedien wie Solid-State-Laufwerken (SSDs). Durch das Zwischenspeichern auf dem Laufwerk wird der Datenabruf in AlloyDB Omni-Installationen mit Datenverzeichnissen auf langsameren Speichermedien beschleunigt.

Wie die gemeinsamen Zwischenspeicher von PostgreSQL ist der AlloyDB Omni-Datenträger-Cache nicht persistent. Das bedeutet, dass die im Cache gespeicherten Daten beim Neustart verloren gehen.

Standardmäßig verwendet der AlloyDB Omni-Datenträger-Cache den gesamten vom Dateisystem gemeldeten Speicher. Mit dem Parameter omni_disk_cache_file_size können Sie die Menge an Speicherplatz definieren, die für das Zwischenspeichern von Daten reserviert ist.

AlloyDB Omni-Datenträger-Cache aktivieren

Führen Sie einen der folgenden Schritte aus, um den Datenträger-Cache zu aktivieren:

Datenträger-Cache auf einem generischen Volume aktivieren

Sie können den Datenträger-Cache mit einem generischen Volume aktivieren.

Wenn Sie den Datenträger-Cache auf einem generischen Volume im AlloyDB Omni Kubernetes-Operator aktivieren möchten, benötigen Sie ein nichtflüchtiges Volume und ein storageClass.

Wenn Sie beispielsweise GKE verwenden und das nichtflüchtige Volume und storageClass nicht bereit sind, müssen Sie die folgenden Schritte ausführen, bevor Sie den Datenträger-Cache auf einem generischen Volume aktivieren:

  1. Cluster mit lokalem SSD-basierten Speicher erstellt
  2. Sie haben Ihr Volume mit Schritt 1 von Statischen Bereitsteller für lokale Volumes ausführen im ext4-Dateisystem formatiert.
  3. Manuell ein nichtflüchtiges Volume für jede SSD in Ihrem Cluster erstellt, wobei storageClass den nichtflüchtigen Speicher auf einem Speichergerät definiert.

So aktivieren Sie den Datenträger-Cache auf einem generischen Volume für Ihre Datenbank:

  1. Ändern Sie das Manifest Ihres Datenbankclusters, um das Attribut ultraFastCache dem Abschnitt features des Abschnitts spec hinzuzufügen:

          apiVersion: alloydbomni.dbadmin.goog/v1
          kind: DBCluster
          metadata:
            name: CLUSTER_NAME
          spec:
            databaseVersion: "17.5.0"
            primarySpec:
              features:
                ultraFastCache:
                  cacheSize: DISK_CACHE_SIZE
                  genericVolume:
                    storageClass: "STORAGE_CLASS_NAME"
          ...
          

    Ersetzen Sie Folgendes:

    • DB_CLUSTER_NAME: der Name Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
    • DISK_CACHE_SIZE: die Größe des Cache, z. B. 100Gi. Es muss größer als shared_buffers sein. Dieses Feld ist optional. Wenn Sie den Wert dieses Felds nicht angeben, verwendet AlloyDB Omni den gesamten verbleibenden Speicherplatz auf dem Laufwerk. Dies gilt sowohl für AlloyDB Omni in einem Container als auch in einem Kubernetes-Cluster.
    • STORAGE_CLASS_NAME: der Name des storage class des ultraschnellen Cache-Volumes, z. B. local-storage.
  2. Wenden Sie das Manifest noch einmal an.

Datenträger-Cache auf einem lokalen Volume aktivieren

Wenn Sie ein lokales Volume verwenden möchten, müssen Sie kein PersistentVolume erstellen. Sie können stattdessen die folgende Optimierung verwenden.

Wenn Sie beispielsweise GKE verwenden und das PersistentVolume und storageClass nicht bereit sind, müssen Sie die folgenden Schritte ausführen, bevor Sie den Datenträger-Cache auf einem lokalen Volume aktivieren:

  1. Cluster mit lokalem SSD-basierten Speicher erstellt

  2. Sie haben Ihr Volume mit Schritt 1 von Statischen Bereitsteller für lokale Volumes ausführen im Dateisystem ext4 formatiert.

So aktivieren Sie den Datenträger-Cache auf einem lokalen Volume für Ihre Datenbank:

  1. Ändern Sie das Manifest Ihres Datenbankclusters, um das Attribut ultraFastCache dem Abschnitt features des Abschnitts spec hinzuzufügen:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "17.5.0"
      primarySpec:
        features:
          ultraFastCache:
            cacheSize: DISK_CACHE_SIZE
            localVolume:
              path: "LOCAL_VOLUME_PATH"
              nodeAffinity:
                required:
                  nodeSelectorTerms:
                  - matchExpressions:
                    - key: "LABEL_KEY"
                      operator: "OPERATOR_VALUE"
                      values:
                      - "LABEL_KEY_VALUE"
    ...
      

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
    • DISK_CACHE_SIZE: die Größe des Cache, z. B. 100Gi. Es muss größer als shared_buffers sein. Dieses Feld ist optional. Wenn Sie den Wert dieses Felds nicht angeben, verwendet AlloyDB Omni den gesamten verbleibenden Speicherplatz auf dem Laufwerk. Dies gilt sowohl für AlloyDB Omni in einem Container als auch in einem Kubernetes-Cluster.
    • STORAGE_CLASS_NAME: der Name der Speicherklasse.
    • LOCAL_VOLUME_PATH: der Pfad zum lokalen Volume, z. B. /mnt/disks/raid/0.
    • LABEL_KEY: das Label des Knotens für den Schlüssel, der als Standortindikator dient und eine gleichmäßige Pod-Verteilung im Cluster ermöglicht, z. B. cloud.google.com/gke-local-nvme-ssd.
    • OPERATOR_VALUE: die Beziehung des Schlüssels zu einer Reihe von Werten, z. B. In. Legen Sie den Parameter auf einen der folgenden Werte fest:
      • In: Das Array „values“ darf nicht leer sein.
      • NotIn: Das Array „values“ darf nicht leer sein.
      • Exists: Das Array „values“ muss leer sein.
      • DoesNotExist: Das Array „values“ muss leer sein.
      • Gt: Das Array „values“ muss ein einzelnes Element enthalten, das als Ganzzahl interpretiert wird.
      • Lt: Das Array „values“ muss ein einzelnes Element enthalten, das als Ganzzahl interpretiert wird.
    • LABEL_KEY_VALUE: der Wert für Ihren Labelschlüssel, z. B. true. Legen Sie den Parameter so auf ein Array von Stringwerten fest:
      • Wenn der Operator In oder NotIn ist, darf das Array „values“ nicht leer sein.
      • Wenn der Operator Exists oder DoesNotExist ist, muss das Array „values“ leer sein.
      • Wenn der Operator Gt oder Lt ist, muss das Array „values“ ein einzelnes Element enthalten, das als Ganzzahl interpretiert wird.

Datenträger-Cache auf einem sitzungsspezifischen Volume aktivieren

Sie können den Datenträger-Cache mit einem emptyDir-Volume aktivieren, das temporären Speicher bereitstellt, der direkt mit dem Lebenszyklus Ihres Pods verknüpft ist. Das Volume wird erstellt, wenn ein Pod einem Knoten zugewiesen wird, und existiert so lange, wie der Pod auf diesem Knoten ausgeführt wird.

Wenn ein Pod von einem Knoten entfernt wird, werden die Daten im emptyDir endgültig gelöscht. Dieser Volume-Typ eignet sich für einen Cache, da er temporären, schnellen Speicher bietet. Die Daten im Cache müssen nicht beibehalten werden, wenn der Pod neu geplant wird.

So aktivieren Sie den Datenträger-Cache auf einem sitzungsspezifischen Volume für Ihre Datenbank:

  1. Ändern Sie das Manifest Ihres Datenbankclusters, um das Attribut ultraFastCache dem Abschnitt features des Abschnitts spec hinzuzufügen, und geben Sie emptyDirVolume an:

          apiVersion: alloydbomni.dbadmin.goog/v1
          kind: DBCluster
          metadata:
            name: CLUSTER_NAME
          spec:
            databaseVersion: "17.5.0"
            primarySpec:
              features:
                ultraFastCache:
                  cacheSize: DISK_CACHE_SIZE
                  emptyDirVolume: {}
            ...
          

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
    • DISK_CACHE_SIZE: Die Größe des Cache, z. B. 200 Gi.
  2. Wenden Sie das Manifest noch einmal an.

Laufwerk-Cache-Konfiguration prüfen

Nachdem Sie den AlloyDB Omni-Datenträger-Cache aktiviert haben, prüfen Sie, ob auf den Datenträger-Cache zugegriffen wird. Dazu überwachen Sie die Lese- und Schreibaktivität auf den Datenträgern mit verfügbaren Dienstprogrammen wie iotop oder iostat.

Außerdem können Sie prüfen, ob der AlloyDB Omni-Datenträger-Cache geöffnet ist.

Verwenden Sie den folgenden Befehl, um die Konfiguration des Datenträger-Caches für AlloyDB Omni zu prüfen.

  kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"

Wenn Ihr Datenträger-Caching richtig konfiguriert ist, wird die Meldung Successfully opened omni disk cache ... in den Protokollen angezeigt.

Nächste Schritte

* Spaltenbasierte Engine konfigurieren * AlloyDB Omni verwalten und überwachen