Acelerar el rendimiento de la base de datos mediante la caché de disco

Selecciona una versión de la documentación:

En esta página se describe cómo aprovisionar, configurar y usar el almacenamiento en caché de disco en AlloyDB Omni para aumentar el rendimiento de tu instalación de AlloyDB Omni.

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

Para habilitar la caché de disco en AlloyDB Omni en un contenedor, sigue estos pasos.

Aprovisionar discos y crear un sistema de archivos

En el caso de la caché de disco de AlloyDB Omni, se crea un sistema de archivos en uno o varios discos y se monta en un contenedor con AlloyDB Omni. Además, puedes usar utilidades como mdadm o lvm para agrupar la capacidad con varios discos y usar cualquier sistema de archivos.

En los siguientes pasos se muestra cómo usar lvm y ext4 en una instancia de Ubuntu Compute Engine con SSDs NVMe.

  1. Crea un grupo de volúmenes a partir de todos los dispositivos físicos disponibles:

      nvme_prefix="STORAGE_PREFIX"
      nvme_list=$(ls "$nvme_prefix"*)
      sudo vgcreate VOLUME_GROUP ${nvme_list}

    Haz los cambios siguientes:

    • STORAGE_PREFIX: prefijo de la ruta de los discos locales de destino que están conectados a una máquina virtual mediante la interfaz Non-Volatile Memory Express (NVMe). Por ejemplo, en Google Cloud, las rutas de los dispositivos NVMe siempre empiezan por /dev/nvme0n.
    • VOLUME_GROUP: nombre de un grupo de volúmenes en el que se combinan tus SSDs. Por ejemplo, omni-disk-cache-volume.
  2. Para crear un volumen lógico a partir de la capacidad libre del grupo de volúmenes del paso anterior, usa el siguiente comando:

      sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    Sustituye LOGICAL_VOLUME por el nombre de un volumen lógico que el LVM trata como una partición (por ejemplo, omni_disk_cache_device).

  3. Crea el sistema de archivos ext4 en el volumen lógico. Si es necesario, puedes especificar otras opciones de ext4 sujetas a la seguridad de los datos.
      sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. Para crear un directorio que sirva como punto de montaje en la máquina host y montar el sistema de archivos, usa el siguiente comando:

      sudo mkdir /OMNI_DISK_CACHE_DIRECTORY
      sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY

    Sustituye OMNI_DISK_CACHE_DIRECTORY por el nombre del directorio o la ruta al directorio que sirve como punto de montaje (por ejemplo, omni_disk_cache_directory).

Montar el directorio de caché en AlloyDB Omni

Antes de habilitar la caché de disco en AlloyDB Omni que se ejecuta en un contenedor, debes montar el directorio de caché en AlloyDB Omni.

Para obtener información sobre cómo instalar AlloyDB Omni desde una imagen de Docker y personalizarlo, consulta Personalizar la instalación de AlloyDB Omni.

Para montar el OMNI_DISK_CACHE_DIRECTORY en el contenedor de Docker que ejecuta AlloyDB Omni, usa el siguiente comando:

Docker

      sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni

Haz los cambios siguientes:

  • CONTAINER_NAME: el nombre que se asignará al nuevo contenedor de AlloyDB Omni. Por ejemplo, my-omni.
  • PASSWORD: la contraseña del administrador raíz de tu base de datos PostgreSQL.
  • DATA_DIR: la ruta del sistema de archivos que quieres que AlloyDB Omni use para su directorio de datos.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: el directorio de caché del contenedor de AlloyDB Omni que se asigna al punto de montaje de la máquina host. Por ejemplo, en función del valor del directorio de caché del contenedor, puede ser /omni_disk_cache_directory, similar a OMNI_DISK_CACHE_DIRECTORY, o /disk/cache/inside/container.

Podman

      podman run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

Haz los cambios siguientes:

  • CONTAINER_NAME: el nombre que se asignará al nuevo contenedor de AlloyDB Omni. Por ejemplo, my-omni.
  • PASSWORD: la contraseña del administrador raíz de tu base de datos PostgreSQL.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: el directorio de caché del contenedor de AlloyDB Omni que se asigna al punto de montaje de la máquina host. Por ejemplo, en función del valor del directorio de caché del contenedor, puede ser /omni_disk_cache_directory, similar a OMNI_DISK_CACHE_DIRECTORY, o /disk/cache/inside/container.

Para conceder permisos de acceso completo al OMNI_DISK_CACHE_DIRECTORY montado, usa los siguientes comandos:

Docker

      sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      sudo docker exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      

Podman

      sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      sudo podman exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      

Habilitar la caché de disco de AlloyDB Omni

Para habilitar la caché de disco de AlloyDB Omni en tu base de datos, define los parámetros de configuración unificada general (GUC) adecuados después de asegurarte de que se puede acceder al directorio de caché montado desde el contenedor Docker.

  1. Para conectarte a la base de datos AlloyDB Omni en contenedores como superusuario, usa el siguiente comando:

    Docker

          sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
          

    Podman

          sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
          
  2. Para definir el valor de los parámetros, usa los siguientes comandos en la base de datos de AlloyDB Omni:

            alter system set omni_disk_cache_enabled=on;
            alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
          
  3. De forma predeterminada, AlloyDB Omni usa todo el espacio disponible en el sistema de archivos. Si es necesario, puede anular el valor predeterminado con el parámetro omni_disk_cache_file_size.

          alter system set omni_disk_cache_file_size=SIZE_IN_MB;
          
  4. Para que se apliquen los cambios en los parámetros de configuración de la caché, reinicia el contenedor en ejecución con AlloyDB Omni:

    Docker

          sudo docker restart CONTAINER_NAME
          

    Podman

          sudo podman restart CONTAINER_NAME
          

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 la caché de disco monitorizando la actividad de lectura y escritura en los discos con utilidades 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 en un contenedor, sigue estos pasos:

Docker

sudo docker logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"

Podman

sudo podman logs CONTAINER_NAME 2>&1 | 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