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 freigegebenen Puffer von PostgreSQL ist der AlloyDB Omni-Laufwerk-Cache nicht persistent. Das bedeutet, dass die im Cache gespeicherten Daten beim Neustart verloren gehen.
Standardmäßig verwendet der AlloyDB Omni-Laufwerks-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-Laufwerks-Cache aktivieren
Die Schritte, die Sie zum Aktivieren des Laufwerk-Cache für AlloyDB Omni ausführen müssen, hängen davon ab, ob Sie AlloyDB Omni in einem Container oder in einem Kubernetes-Cluster ausführen.
Datenträger-Cache für ein generisches Volume aktivieren
Sie können den Festplatten-Cache mit einem generischen Volume aktivieren.
Wenn Sie den Festplatten-Cache für ein generisches Volume im AlloyDB Omni Kubernetes-Operator aktivieren möchten, benötigen Sie ein PersistentVolume und eine storageClass.
Wenn Sie beispielsweise GKE verwenden und das nichtflüchtige Volume und storageClass nicht bereit sind, müssen Sie Folgendes ausführen, bevor Sie den Festplatten-Cache für ein generisches Volume aktivieren:
- Sie haben einen Cluster mit lokalem SSD-Speicher erstellt.
- Sie haben Ihr Volume mit Schritt 1 unter Statischen Bereitsteller für lokale Volumes ausführen mit dem ext4-Dateisystem formatiert.
- Sie haben für jede SSD in Ihrem Cluster ein nichtflüchtiges Volume manuell erstellt, wobei
storageClassden nichtflüchtigen Speicher auf einem Speichergerät definiert.
Führen Sie die folgenden Schritte aus, um den Festplatten-Cache für ein generisches Volume für Ihre Datenbank zu aktivieren:
Ändern Sie das Manifest Ihres Datenbankclusters, um das Attribut
ultraFastCachedem Abschnittfeaturesdes Abschnittsspechinzuzufü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 alsshared_bufferssein. Dieses Feld ist optional. Wenn Sie den Wert dieses Felds nicht angeben, verwendet AlloyDB Omni den gesamten verbleibenden Speicherplatz auf der Festplatte. Dies gilt sowohl für AlloyDB Omni in einem Container als auch in einem Kubernetes-Cluster.STORAGE_CLASS_NAME: Der Name desstorage classdes ultraschnellen Cache-Volumes, z. B.local-storage.
- Wenden Sie das Manifest noch einmal an.
Laufwerk-Cache auf einem lokalen Volume aktivieren
Wenn Sie ein lokales Volume verwenden möchten, müssen Sie kein Persistent Volume erstellen. Stattdessen können Sie die folgende Optimierung verwenden.
Wenn Sie beispielsweise GKE verwenden und das PersistentVolume und storageClass nicht bereit sind, müssen Sie Folgendes ausführen, bevor Sie den Festplatten-Cache für ein lokales Volume aktivieren:
- Sie haben einen Cluster mit lokalem SSD-Speicher erstellt.
- Sie haben Ihr Volume mit Schritt 1 von Statischen Bereitsteller für lokale Volumes ausführen mit dem Dateisystem
ext4formatiert.
So aktivieren Sie den Festplatten-Cache auf einem lokalen Volume für Ihre Datenbank:
Ändern Sie das Manifest Ihres Datenbankclusters, um das Attribut
ultraFastCachedem Abschnittfeaturesdes Abschnittsspechinzuzufü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 alsshared_bufferssein. Dieses Feld ist optional. Wenn Sie den Wert dieses Felds nicht angeben, verwendet AlloyDB Omni den gesamten verbleibenden Speicherplatz auf der Festplatte. Dies gilt sowohl für AlloyDB Omni in einem Container als auch in einem Kubernetes-Cluster.STORAGE_CLASS_NAME: Der Name der StorageClass.LOCAL_VOLUME_PATH: der Pfad zum lokalen Volume, z. B./mnt/disks/raid/0.LABEL_KEY: Das Knotenlabel 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 für den Parameter 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 auf ein Array von Stringwerten fest, wie unten dargestellt:- Wenn der Operator
InoderNotInist, darf das Array „values“ nicht leer sein. - Wenn der Operator
ExistsoderDoesNotExistist, muss das Array „values“ leer sein. - Wenn der Operator
GtoderLtist, muss das Array „values“ ein einzelnes Element enthalten, das als Ganzzahl interpretiert wird.
- Wenn der Operator
- Wenden Sie das Manifest noch einmal an.
Festplatten-Cache für ein temporäres Volume aktivieren
Sie können den Festplatten-Cache mit einem emptyDir-Volume aktivieren. Dieses bietet temporären Speicher, der direkt an den Lebenszyklus Ihres Pods gebunden ist. Das Volume wird erstellt, wenn ein Pod einem Knoten zugewiesen wird, und ist so lange vorhanden, wie der Pod auf diesem Knoten ausgeführt wird.
Wenn ein Pod aus einem Knoten entfernt wird, werden die Daten im emptyDir endgültig gelöscht. Dieser Volumetyp 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.
Führen Sie die folgenden Schritte aus, um den Festplatten-Cache für ein temporäres Volume für Ihre Datenbank zu aktivieren:
Ändern Sie das Manifest Ihres Datenbankclusters, um dem Abschnitt
featuresdes Abschnittsspecdas AttributultraFastCachehinzuzufügen, und geben SieemptyDirVolumean: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.
- Wenden Sie das Manifest noch einmal an.
Laufwerk-Cache-Konfiguration prüfen
Nachdem Sie den AlloyDB Omni-Laufwerks-Cache aktiviert haben, prüfen Sie, ob auf den Laufwerks-Cache zugegriffen wird. Überwachen Sie dazu die Lese- und Schreibaktivitäten auf den Laufwerken mit verfügbaren Dienstprogrammen wie iotop oder iostat.
Außerdem können Sie prüfen, ob der AlloyDB Omni-Laufwerks-Cache geöffnet ist.
Verwenden Sie den folgenden Befehl, um die Konfiguration des Festplatten-Cache 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 das Festplatten-Caching richtig konfiguriert ist, wird die Meldung Successfully opened omni disk cache ... in den Logs angezeigt.