Configura el motor de columnas en AlloyDB Omni

Selecciona una versión de la documentación:

En esta página, se describe cómo habilitar o inhabilitar el motor de columnas en un clúster de base de datos de AlloyDB Omni. También se explica cómo configurar un tamaño inicial adecuado para su almacén de columnas.

Para obtener una descripción general conceptual del motor de columnas de AlloyDB, consulta la descripción general del motor de columnas de AlloyDB Omni.

Habilita el motor de columnas

Para usar el motor columnar en una instancia, establece la marca google_columnar_engine.enabled de la instancia en on.

Kubernetes

Para establecer la marca google_columnar_engine.enabled en on, modifica el manifiesto del clúster de la base de datos para agregar el atributo parameters a la sección primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "17.5.0"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

Reemplaza CLUSTER_NAME por el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.

Configura el tamaño del almacén de columnas

Mientras el motor de columnas está habilitado en una instancia, AlloyDB Omni asigna una parte de la memoria de la instancia para almacenar sus datos de columnas. Dedicar RAM de alta velocidad a tu almacén de columnas verifica que AlloyDB Omni pueda acceder a los datos de columnas lo más rápido posible.

La memoria y la caché de almacenamiento juntas representan la capacidad general del motor de columnas.

Cómo configurar la memoria

Puedes establecer la asignación en un tamaño fijo con la marca google_columnar_engine.memory_size_in_mb.

Kubernetes

Para establecer la marca google_columnar_engine.memory_size_in_mb, modifica el manifiesto del clúster de la base de datos para agregar el atributo parameters a la sección primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "17.5.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.
  • COLUMN_MEMORY_SIZE: Es el nuevo tamaño del almacenamiento de la columna, en megabytes; por ejemplo, 256.

Configura la caché de almacenamiento

Puedes configurar la caché de almacenamiento del motor columnar en dispositivos compartidos o dedicados.

Kubernetes

Dispositivos compartidos

Para habilitar la caché de almacenamiento de tu base de datos en dispositivos compartidos, modifica el manifiesto del clúster de la base de datos para agregar el atributo columnarSpillToDisk a la sección features de la sección primarySpec:

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

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.
  • STORAGE_CACHE_SIZE: Es el tamaño de la caché de almacenamiento columnar, por ejemplo, 5Gi. Si no especificas un valor para este campo, se asigna el 5% de la caché de disco al motor columnar de forma predeterminada.
  • ULTRAFAST_CACHE_SIZE: El tamaño de la caché, por ejemplo, 100Gi. Debe ser superior a shared_buffers. Este campo es opcional. Si no especificas el valor de este campo, AlloyDB Omni usa todo el espacio restante en el disco, lo que se aplica tanto a AlloyDB Omni en un contenedor como en un clúster de Kubernetes. Para obtener más información sobre las unidades de medida, consulta Unidades de recursos de memoria.
  • STORAGE_CLASS_NAME: El nombre de la clase de almacenamiento del volumen de caché ultrarrápido, por ejemplo, local-storage

Dispositivos de uso específico

De forma predeterminada, la caché de almacenamiento del motor columnar comparte los mismos dispositivos que la caché de disco de AlloyDB Omni. Sin embargo, puedes configurar el motor columnar para que use sus propios dispositivos dedicados para la caché de almacenamiento por los siguientes motivos:

  • No necesitas una caché de disco porque tu almacenamiento principal ya está en SSDs de alto rendimiento. En este caso, puedes crear una caché de almacenamiento del motor columnar sin tener que asignar espacio para una caché de disco.
  • Quieres usar diferentes medios de almacenamiento para la caché de disco y la caché del motor columnar. Por ejemplo, es posible que desees usar un SSD estándar para la caché de disco y un SSD NVMe de mayor rendimiento para la caché del motor columnar.
Usa un volumen genérico

Para configurar un dispositivo dedicado para la caché de almacenamiento del motor columnar, debes modificar el manifiesto DBCluster para agregar el atributo columnarSpillToDisk a la sección features. Dentro de columnarSpillToDisk, puedes especificar un genericVolume con un storageClass que apunte al almacenamiento que deseas usar para la caché del motor columnar dedicado.

A continuación, se muestra un ejemplo de cómo configurar un dispositivo dedicado de 50 Gi para la caché de almacenamiento del motor columnar con una clase de almacenamiento llamada local-ssd:

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

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.
  • STORAGE_CACHE_SIZE: Es el tamaño de la caché de almacenamiento columnar, por ejemplo, 50Gi. Si no especificas un valor para este campo, se asigna el 5% de la caché de disco al motor columnar de forma predeterminada.
  • STORAGE_CLASS_NAME: Es el nombre de la clase de almacenamiento para el volumen de caché del motor columnar dedicado, por ejemplo, local-ssd.
Usa un volumen efímero

Puedes configurar el motor columnar para que use un volumen emptyDir efímero para su caché de almacenamiento. Un volumen emptyDir se crea cuando se asigna un Pod a un nodo, y existe mientras ese Pod se ejecute en ese nodo. Cuando se quita un Pod de un nodo, los datos en emptyDir se borran de forma permanente.

Para configurar un volumen emptyDir para la caché de almacenamiento columnar, modifica tu manifiesto DBCluster para agregar el atributo emptyDir a la sección columnarSpillToDisk.

A continuación, se muestra un ejemplo de cómo configurar un volumen efímero para la caché de almacenamiento columnar:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "17.5.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: 50Gi
        emptyDir: {}

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.
  • STORAGE_CACHE_SIZE: Es el tamaño de la caché de almacenamiento columnar, por ejemplo, 50Gi.

Habilita la unión vectorizada

El motor de columnas tiene una función de unión vectorizada que puede mejorar el rendimiento de las uniones aplicando el procesamiento vectorizado a las consultas aptas.

Después de habilitar la unión vectorizada, el optimizador de consultas de AlloyDB tiene la opción de aplicar el operador de unión vectorizada en lugar del operador de unión hash estándar de PostgreSQL. El optimizador toma esta decisión comparando el costo de ejecutar la consulta con cada método.

Para habilitar la unión vectorizada en una instancia, establece la marca google_columnar_engine.enable_vectorized_join de la instancia en on.

Para establecer esta marca en una instancia, ejecuta el comando ALTER SYSTEM de PostgreSQL:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

De forma predeterminada, AlloyDB Omni asigna un subproceso a la función de unión vectorizada. Puedes aumentar la cantidad de subprocesos disponibles para esta función configurando la marca google_columnar_engine.vectorized_join_threads en un valor mayor. El valor máximo es cpu_count * 2.

Actualiza manualmente tu motor de columnas

De forma predeterminada, cuando el motor de columnas está habilitado, actualiza el almacén de columnas en segundo plano.

Para actualizar manualmente el motor de columnas, ejecuta la siguiente consulta en SQL:

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

Reemplaza TABLE_NAME por el nombre de la tabla o la vista materializada que deseas actualizar de forma manual.

Inhabilita el motor de columnas

Para inhabilitar el motor de Columbar en una instancia, establece la marca google_columnar_engine.enabled en off.

Kubernetes

Para establecer la marca google_columnar_engine.enabled en off, modifica el manifiesto del clúster de la base de datos para agregar el atributo parameters a la sección primarySpec:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "17.5.0"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

Reemplaza CLUSTER_NAME por el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.

¿Qué sigue?