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.
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: "18.3.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 bases 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 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.
Kubernetes
Para establecer la marca google_columnar_engine.memory_size_in_mb, modifica el manifiesto del clúster de 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: "18.3.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 bases de datos que declaraste cuando lo creaste.COLUMN_MEMORY_SIZE: Es el tamaño nuevo del almacenamiento de columnas, en megabytes, por ejemplo,256.
Configura la caché de almacenamiento
Puedes configurar la caché de almacenamiento del motor de columnas en dispositivos compartidos o dedicados.
Kubernetes
Dispositivos compartidos
Para habilitar la caché de almacenamiento de tu base de datos en discos 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: "18.3.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 bases de datos que declaraste cuando lo creaste.STORAGE_CACHE_SIZE: Es el tamaño de la caché de almacenamiento en columnas, por ejemplo,5Gi. 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 de la caché, por ejemplo,100Gi. Debe ser superior ashared_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: Es 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 de columnas comparte los mismos dispositivos que la memoria caché del disco de AlloyDB Omni. Sin embargo, puedes configurar el motor de columnas para que use sus propios dispositivos dedicados para su caché de almacenamiento por los siguientes motivos:
- No necesitas una memoria caché de disco porque tu almacenamiento principal ya está en SSD de alto rendimiento. En este caso, puedes crear una caché de almacenamiento del motor de columnas sin tener que asignar espacio para una memoria caché del disco.
- Quieres usar diferentes medios de almacenamiento para la memoria caché del disco y la memoria caché del motor de columnas. Por ejemplo, es posible que quieras usar una SSD estándar para la memoria caché del disco y una SSD NVMe de mayor rendimiento para la caché del motor de columnas.
Usa un volumen genérico
Para configurar un dispositivo de uso específico para la caché de almacenamiento del motor de columnas, modifica 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é dedicada del motor de columnas.
A continuación, se muestra un ejemplo de cómo configurar un dispositivo de uso específico de 50 Gi para la caché de almacenamiento del motor de columnas con una clase de almacenamiento llamada local-ssd:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "18.3.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 bases de datos que declaraste cuando lo creaste.STORAGE_CACHE_SIZE: Es 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.STORAGE_CLASS_NAME: Es el nombre de la clase de almacenamiento para el volumen de caché del motor de columnas dedicado, por ejemplo,local-ssd.
Usa un volumen efímero
Puedes configurar el motor de columnas para que use un volumen emptyDir efímero para su caché de almacenamiento. Se crea un volumen emptyDir 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 del emptyDir se borran de forma permanente.
Para configurar un volumen emptyDir para la caché de almacenamiento en columnas, modifica tu manifiesto DBCluster para agregar el atributo emptyDir a la sección columnarSpillToDisk.
Este es un ejemplo de cómo configurar un volumen efímero para la caché de almacenamiento en columnas:
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 bases de datos que declaraste cuando lo creaste.STORAGE_CACHE_SIZE: Es el tamaño de la caché de almacenamiento en columnas, 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 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.
google_columnar_engine.enable_vectorized_join: "on" a la sección parameters de tu manifiesto DBCluster. Para obtener más información, consulta Configura marcas de 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.
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: "18.3.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 bases de datos que declaraste cuando lo creaste.
¿Qué sigue?
Consulta la lista completa de marcas de base de datos del motor de columnas.
Prueba el codelab Acelera las consultas analíticas con el motor de columnas en AlloyDB Omni.