Para obtener una descripción general conceptual del motor de columnas de AlloyDB, consulta Descripción general del motor de columnas de AlloyDB Omni.
Habilitar el motor columnar
Para usar el motor de columnas en una instancia, define la marca google_columnar_engine.enabled
de la instancia en on.
Kubernetes
Para asignar el valor on a la marca google_columnar_engine.enabled, modifica el manifiesto del clúster de base de datos para añadir 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"
Sustituye CLUSTER_NAME por el nombre de tu clúster de base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.
Configurar el tamaño del almacén de columnas
Mientras el motor columnar está habilitado en una instancia, AlloyDB Omni asigna una parte de la memoria de la instancia para almacenar sus datos en columnas. Si asignas RAM de alta velocidad a tu almacén de columnas, te aseguras de que AlloyDB Omni pueda acceder a los datos de las columnas lo más rápido posible.
La memoria y la caché de almacenamiento representan juntas la capacidad general del motor en columnas.
Configurar la memoria
Puede asignar un tamaño fijo mediante la marca google_columnar_engine.memory_size_in_mb.
Kubernetes
Para definir la marca google_columnar_engine.memory_size_in_mb, modifica el manifiesto del clúster de base de datos para añadir 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"
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.COLUMN_MEMORY_SIZE: el nuevo tamaño del almacenamiento de la columna, en megabytes. Por ejemplo,256.
Configurar 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 añadir 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"
...
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.STORAGE_CACHE_SIZE: tamaño de la caché de almacenamiento en columnas. Por ejemplo,5Gi. Si no especifica ningún valor para este campo, se asignará de forma predeterminada el 5% de la caché de disco al motor columnar.ULTRAFAST_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. 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 especializados
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 su 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 de columnas. Por ejemplo, puedes usar una unidad SSD estándar para la caché de disco y una unidad SSD NVMe de mayor rendimiento para la caché del motor de columnas.
Usar un volumen genérico
Para configurar un dispositivo dedicado para la caché de almacenamiento del motor columnar, modifique el manifiesto DBCluster para añadir el atributo columnarSpillToDisk a la sección features. En columnarSpillToDisk, puede especificar un genericVolume con un storageClass que apunte al almacenamiento que quiera 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 de columnas mediante 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"
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.STORAGE_CACHE_SIZE: tamaño de la caché de almacenamiento en columnas. Por ejemplo,50Gi. Si no especifica ningún valor para este campo, se asignará de forma predeterminada el 5% de la caché de disco al motor columnar.STORAGE_CLASS_NAME: el nombre de la clase de almacenamiento del volumen de caché del motor columnar dedicado. Por ejemplo,local-ssd.
Usar un volumen efímero
Puedes configurar el motor columnar para que use un volumen efímero emptyDir para su caché de almacenamiento. Un volumen emptyDir se crea cuando se asigna un pod a un nodo y existe mientras ese pod se ejecuta en ese nodo. Cuando se quita un pod de un nodo, los datos de emptyDir se eliminan de forma permanente.
Para configurar un volumen de emptyDir para la caché de almacenamiento columnar, modifique el manifiesto de DBCluster para añadir 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: {}
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.STORAGE_CACHE_SIZE: tamaño de la caché de almacenamiento en columnas. Por ejemplo,50Gi.
Habilitar la combinación vectorizada
El motor en 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 combinación vectorizada, el planificador de consultas de AlloyDB tiene la opción de aplicar el operador de combinación vectorizada en lugar del operador de combinación hash estándar de PostgreSQL. El planificador toma esta decisión comparando el coste de ejecutar la consulta con cada método.
Para habilitar la unión vectorizada en una instancia, define la marca
google_columnar_engine.enable_vectorized_join
de la instancia en on.
Para definir esta marca en una instancia, ejecuta el comando ALTER SYSTEM de PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB Omni asigna un subproceso a la función de unión vectorizada de forma predeterminada. Puedes aumentar el número de hilos disponibles para esta función asignando un valor mayor a la marca google_columnar_engine.vectorized_join_threads. El valor máximo es cpu_count * 2.
Actualizar manualmente el motor de columnas
De forma predeterminada, cuando el motor columnar está habilitado, actualiza el almacén de columnas en segundo plano.
Para actualizar manualmente el motor de columnas, ejecuta la siguiente consulta de SQL:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
Sustituye TABLE_NAME por el nombre de la tabla o de la vista materializada que quieras actualizar manualmente.
Inhabilitar el motor columnar
Para inhabilitar el motor de columbar en una instancia, asigna el valor off a la marca google_columnar_engine.enabled.
Kubernetes
Para asignar el valor off a la marca google_columnar_engine.enabled, modifica el manifiesto del clúster de base de datos para añadir 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"
Sustituye CLUSTER_NAME por el nombre de tu clúster de base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.
Siguientes pasos
Consulta la lista completa de marcas de bases de datos del motor columnar.
Sigue el tutorial Acelerar las consultas analíticas con el motor en columnas de AlloyDB Omni de Google CodeLab.