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 Descripción general del motor de columnas de AlloyDB Omni.

Habilita el motor de columnas

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

Para establecer el parámetro google_columnar_engine.enabled en on, completa los siguientes pasos:

  1. Abre el manifiesto del clúster de base de datos DBCluster.

  2. En la sección primarySpec, agrega el parámetro google_columnar_engine.enabled al bloque parameters:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
    

    Reemplaza DB_CLUSTER_NAME por el nombre del clúster de la base de datos.

  3. El organizador de RPM reinicia automáticamente la base de datos para aplicar los cambios de parámetros. Aplica el manifiesto DBCluster actualizado con uno de los siguientes métodos:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Reemplaza lo siguiente:

    • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
    • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

    Ansible

    1. Crea un archivo de guía de update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      Reemplaza lo siguiente:

      • SSH_USER: Es el nombre de usuario que usas para conectarte a los nodos del clúster con SSH.
      • SSH_KEY_PATH: Es la ruta de acceso local al archivo de clave privada SSH que se usa para conectarse a tus nodos.
    2. Ejecuta la guía desde tu nodo de control y pasa la especificación del recurso como una variable adicional:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      Reemplaza lo siguiente:

      • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
      • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

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 con la mayor rapidez posible.

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

Configura la memoria

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

Para establecer el parámetro google_columnar_engine.memory_size_in_mb, completa los siguientes pasos:

  1. Abre el manifiesto del clúster de base de datos DBCluster.

  2. En la sección primarySpec, agrega la configuración del motor de columnas al bloque parameters:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
            google_columnar_engine.memory_size_in_mb: "MEMORY_SIZE_MB"
    

    Reemplaza lo siguiente:

    • DB_CLUSTER_NAME: es el nombre del clúster de la base de datos.
    • MEMORY_SIZE_MB: Es la cantidad de memoria, en megabytes, que se asignará al motor de columnas.
  3. El organizador de RPM reinicia automáticamente la base de datos para aplicar los cambios de parámetros. Aplica el manifiesto DBCluster actualizado con uno de los siguientes métodos:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Reemplaza lo siguiente:

    • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
    • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

    Ansible

    1. Crea un archivo de guía de update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      Reemplaza lo siguiente:

      • SSH_USER: Es el nombre de usuario que usas para conectarte a los nodos del clúster con SSH.
      • SSH_KEY_PATH: Es la ruta de acceso local al archivo de clave privada SSH que se usa para conectarse a tus nodos.
    2. Ejecuta la guía desde tu nodo de control y pasa la especificación del recurso como una variable adicional:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      Reemplaza lo siguiente:

      • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
      • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

Configura la caché de almacenamiento

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

Dispositivos de uso específico

Para configurar un dispositivo de uso específico para la caché de almacenamiento del motor de columnas, completa los siguientes pasos:

  1. Abre el manifiesto del clúster de base de datos DBCluster.

  2. En la sección primarySpec, agrega el atributo columnarSpillToDisk con cacheSize y localVolume.path al bloque features:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
              localVolume:
                path: COLUMNAR_CACHE_DIR_PATH
    

    Reemplaza lo siguiente:

    • DB_CLUSTER_NAME: es el nombre del clúster de la base de datos.
    • STORAGE_CACHE_SIZE: es el límite de tamaño de la caché de almacenamiento del motor de columnas, por ejemplo, 50Gi.
    • COLUMNAR_CACHE_DIR_PATH: es la ruta de acceso del sistema de archivos del directorio dedicado para la caché de almacenamiento del motor en columnas, por ejemplo, /mnt/disks/columnarcache.
  3. Aplica el manifiesto DBCluster actualizado con alloydbctl o Ansible:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Reemplaza lo siguiente:

    • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
    • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

    Ansible

    1. Crea un archivo de guía de update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      Reemplaza lo siguiente:

      • SSH_USER: Es el nombre de usuario que usas para conectarte a los nodos del clúster con SSH.
      • SSH_KEY_PATH: Es la ruta de acceso local al archivo de clave privada SSH que se usa para conectarse a tus nodos.
    2. Ejecuta la guía desde tu nodo de control y pasa la especificación del recurso como una variable adicional:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      Reemplaza lo siguiente:

      • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
      • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

Dispositivos compartidos

Si no especificas localVolume.path en columnarSpillToDisk, la caché de almacenamiento del motor de columnas comparte el almacenamiento de la memoria caché del disco configurado en ultraFastCache.

Para configurar la caché de almacenamiento del motor de columnas en dispositivos compartidos, completa los siguientes pasos:

  1. Abre el manifiesto del clúster de base de datos DBCluster.

  2. En la sección primarySpec, agrega los atributos columnarSpillToDisk y ultraFastCache al bloque features:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
            ultraFastCache:
              cacheSize: ULTRAFAST_CACHE_SIZE
              localVolume:
                path: DISK_CACHE_DIR_PATH
    

    Reemplaza lo siguiente:

    • DB_CLUSTER_NAME: es el nombre del clúster de la base de datos.
    • STORAGE_CACHE_SIZE: el tamaño de la caché de almacenamiento en columnas, por ejemplo, 50Gi. Si no especificas un valor para este campo, el 5% de la memoria caché del disco se asigna al motor de columnas de forma predeterminada.
    • ULTRAFAST_CACHE_SIZE: el tamaño máximo del búfer de caché ultrarrápido reservado por AlloyDB Omni, por ejemplo, 100Gi. Si no se establece, se usa todo el espacio en el disco restante en localVolume.path.
    • DISK_CACHE_DIR_PATH: Es la ruta de acceso de la carpeta para los archivos de caché ultrarrápida, por ejemplo, /mnt/disks/chillcache.
  3. Aplica el manifiesto DBCluster actualizado con alloydbctl o Ansible:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Reemplaza lo siguiente:

    • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
    • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

    Ansible

    1. Crea un archivo de guía de update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      Reemplaza lo siguiente:

      • SSH_USER: Es el nombre de usuario que usas para conectarte a los nodos del clúster con SSH.
      • SSH_KEY_PATH: Es la ruta de acceso local al archivo de clave privada SSH que se usa para conectarse a tus nodos.
    2. Ejecuta la guía desde tu nodo de control y pasa la especificación del recurso como una variable adicional:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      Reemplaza lo siguiente:

      • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
      • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

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 que cumplen con los requisitos.

Después de habilitar la unión vectorizada, el planificador 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 planificador 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 este parámetro en un clúster de base de datos, agrega google_columnar_engine.enable_vectorized_join: "on" a la sección parameters de tu manifiesto de DBCluster. Para obtener más información, consulta Configura los parámetros de la base de datos de AlloyDB Omni.

AlloyDB Omni asigna un subproceso a la función de unión vectorizada de forma predeterminada. 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 el 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.

Inhabilitar el motor de columnas

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

Para establecer el parámetro google_columnar_engine.enabled en off, completa los siguientes pasos:

  1. Abre el manifiesto del clúster de base de datos DBCluster.

  2. En la sección primarySpec, establece el parámetro google_columnar_engine.enabled en off en el bloque parameters:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "off"
    

    Reemplaza DB_CLUSTER_NAME por el nombre del clúster de la base de datos.

  3. El organizador de RPM reinicia automáticamente la base de datos para aplicar los cambios de parámetros. Aplica el manifiesto DBCluster actualizado con uno de los siguientes métodos:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Reemplaza lo siguiente:

    • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
    • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

    Ansible

    1. Crea un archivo de guía de update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      Reemplaza lo siguiente:

      • SSH_USER: Es el nombre de usuario que usas para conectarte a los nodos del clúster con SSH.
      • SSH_KEY_PATH: Es la ruta de acceso local al archivo de clave privada SSH que se usa para conectarse a tus nodos.
    2. Ejecuta la guía desde tu nodo de control y pasa la especificación del recurso como una variable adicional:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      Reemplaza lo siguiente:

      • DEPLOYMENT_SPEC_PATH: es la ruta de acceso al directorio de especificaciones de Deployment.
      • DBCLUSTER_SPECIFICATION: es la ruta de acceso al manifiesto de DBCluster que modificaste.

¿Qué sigue?