Además de los búferes compartidos en memoria de PostgreSQL estándar, la caché de disco de AlloyDB Omni permite almacenar búferes en un almacenamiento rápido, como las unidades de estado sólido (SSD). El almacenamiento en caché de disco acelera la recuperación de datos en las instalaciones de AlloyDB Omni con directorios de datos ubicados en un almacenamiento más lento.
Al igual que los búferes compartidos de PostgreSQL, la caché de disco de AlloyDB Omni no es persistente, lo que significa que los datos almacenados en caché se pierden al reiniciar.
De forma predeterminada, la caché de disco de AlloyDB Omni usa todo el almacenamiento que indica el sistema de archivos. Puede definir la cantidad de almacenamiento reservada para almacenar datos en caché mediante el parámetro omni_disk_cache_file_size.
Habilitar la caché de disco de AlloyDB Omni
Los pasos que debes seguir para habilitar la caché de disco en AlloyDB Omni dependen de si ejecutas AlloyDB Omni en un contenedor o en un clúster de Kubernetes.
Habilitar la caché de disco en un volumen genérico
Puedes habilitar la caché de disco mediante un volumen genérico.
Para habilitar la caché de disco en un volumen genérico del operador de Kubernetes de AlloyDB Omni, necesitas un volumen persistente preparado con antelación y un storageClass.
Por ejemplo, si usas GKE y no tienes el volumen persistente y storageClass listos, asegúrate de haber realizado lo siguiente antes de habilitar la caché de disco en un volumen genérico:
- Ha creado un clúster con almacenamiento basado en SSD local.
- Has formateado el volumen con el sistema de archivos ext4 siguiendo el paso 1 de Ejecutar el aprovisionador estático de volumen local.
- Crear manualmente un volumen persistente para cada SSD de tu clúster con
storageClass, que define el almacenamiento persistente en un dispositivo de almacenamiento.
Para habilitar la caché de disco en un volumen genérico de tu base de datos, sigue estos pasos:
Modifica el archivo de manifiesto del clúster de base de datos para añadir el atributo
ultraFastCachea la secciónfeaturesde la secciónspec: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" ...
Haz los cambios siguientes:
DB_CLUSTER_NAME: el nombre de tu clúster de bases de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.DISK_CACHE_SIZE: el tamaño de la caché (por ejemplo,100Gi). Debe ser superior ashared_buffers. Este campo es opcional. Si no especifica el valor de este campo, AlloyDB Omni usará todo el espacio que quede en el disco, lo que se aplica tanto a AlloyDB Omni en un contenedor como en un clúster de Kubernetes.STORAGE_CLASS_NAME: el nombre delstorage classdel volumen de caché ultrarrápido, por ejemplo,local-storage.
- Vuelve a aplicar el archivo de manifiesto.
Habilitar la caché de disco en un volumen local
Si quieres usar un volumen local, no tienes que crear un volumen persistente. En su lugar, puede usar la siguiente optimización.
Por ejemplo, si usas GKE y no tienes el volumen persistente y storageClass listos, asegúrate de haber realizado lo siguiente antes de habilitar la caché de disco en un volumen local:
- Ha creado un clúster con almacenamiento basado en SSD local.
- Has formateado el volumen con el sistema de archivos
ext4siguiendo el paso 1 de Ejecutar el aprovisionador estático de volumen local.
Para habilitar la caché de disco en un volumen local de tu base de datos, haz lo siguiente:
Modifica el archivo de manifiesto del clúster de base de datos para añadir el atributo
ultraFastCachea la secciónfeaturesde la secciónspec: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" ...
Haz los cambios siguientes:
CLUSTER_NAME: el nombre de tu clúster de bases de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.DISK_CACHE_SIZE: el tamaño de la caché (por ejemplo,100Gi). Debe ser superior ashared_buffers. Este campo es opcional. Si no especifica el valor de este campo, AlloyDB Omni usará todo el espacio que quede en el disco, lo que se aplica tanto a AlloyDB Omni en un contenedor como en un clúster de Kubernetes.STORAGE_CLASS_NAME: el nombre de la clase de almacenamiento.LOCAL_VOLUME_PATH: la ruta al volumen local. Por ejemplo,/mnt/disks/raid/0.LABEL_KEY: la etiqueta del nodo de la clave que sirve como indicador de ubicación y facilita la distribución uniforme de los pods en el clúster. Por ejemplo,cloud.google.com/gke-local-nvme-ssd.OPERATOR_VALUE: la relación de la clave con un conjunto de valores, por ejemplo,In. Asigna al parámetro uno de los siguientes valores:-
In: la matriz de valores no puede estar vacía. -
NotIn: la matriz de valores no puede estar vacía. -
Exists: el array de valores debe estar vacío. -
DoesNotExist: el array de valores debe estar vacío. -
Gt: el array de valores debe tener un solo elemento, que se interpreta como un número entero. -
Lt: el array de valores debe tener un solo elemento, que se interpreta como un número entero.
-
LABEL_KEY_VALUE: el valor de la clave de tu etiqueta. Por ejemplo,true. Defina el parámetro como una matriz de valores de cadena de la siguiente manera:- Si el operador es
InoNotIn, la matriz de valores no puede estar vacía. - Si el operador es
ExistsoDoesNotExist, la matriz de valores debe estar vacía. - Si el operador es
GtoLt, la matriz de valores debe tener un solo elemento, que se interpreta como un número entero.
- Si el operador es
- Vuelve a aplicar el archivo de manifiesto.
Habilitar la caché de disco en un volumen efímero
Puedes habilitar la caché de disco mediante un volumen emptyDir, que proporciona almacenamiento temporal vinculado directamente al ciclo de vida de tu pod. El volumen se crea cuando se asigna un pod a un nodo y existe mientras el pod se ejecuta en ese nodo.
Cuando se quita un pod de un nodo, los datos de emptyDir se eliminan de forma permanente. Este tipo de volumen es adecuado para una caché porque proporciona almacenamiento temporal y rápido. No es necesario conservar los datos de la caché si se vuelve a programar el pod.
Para habilitar la caché de disco en un volumen efímero de tu base de datos, sigue estos pasos:
Modifica el archivo de manifiesto de tu clúster de base de datos para añadir el atributo
ultraFastCachea la secciónfeaturesde la secciónspecy especificaemptyDirVolume:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE emptyDirVolume: {} ...
Haz los cambios siguientes:
CLUSTER_NAME: el nombre de tu clúster de bases de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.DISK_CACHE_SIZE: tamaño de la caché (por ejemplo, 200 Gi).
- Vuelve a aplicar el archivo de manifiesto.
Verificar la configuración de la caché de disco
Después de habilitar la caché de disco de AlloyDB Omni, comprueba que se accede a ella monitorizando la actividad de lectura y escritura en los discos con las utilidades disponibles, como iotop o iostat.
Además, puedes comprobar si la caché de disco de AlloyDB Omni está abierta.
Para verificar la configuración de la caché de disco de AlloyDB Omni, usa el siguiente comando.
kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"Si el almacenamiento en caché en disco está configurado correctamente, se mostrará el mensaje Successfully opened omni disk cache ... en los registros.
Siguientes pasos
- Acerca de la gestión automática de la memoria
- Acerca de los discos SSD locales
- Crear e iniciar una instancia de máquina virtual