Configurer le moteur de données en colonnes dans AlloyDB Omni

Sélectionnez une version de la documentation :

Cette page explique comment activer ou désactiver le moteur de données en colonnes sur un cluster de bases de données AlloyDB Omni. Il explique également comment configurer une taille initiale appropriée pour son magasin de colonnes.

Pour une présentation conceptuelle du moteur de données en colonnes AlloyDB, consultez Présentation du moteur de données en colonnes AlloyDB Omni.

Activer le moteur de données en colonnes

Pour utiliser le moteur de données en colonnes sur une instance, définissez l'option google_columnar_engine.enabled de l'instance sur on.

Kubernetes

Pour définir l'option google_columnar_engine.enabled sur on, modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut parameters à la section primarySpec :

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

Remplacez CLUSTER_NAME par le nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.

Configurer la taille du store orienté colonnes

Lorsque le moteur de données en colonnes est activé sur une instance, AlloyDB Omni alloue une partie de la mémoire de l'instance pour stocker ses données en colonnes. En dédiant de la RAM haut débit à votre store orienté colonnes, vous vous assurez qu'AlloyDB Omni peut accéder aux données en colonnes le plus rapidement possible.

La mémoire et le cache de stockage représentent ensemble la capacité globale du moteur de données en colonnes.

Configurer la mémoire

Vous pouvez définir l'allocation sur une taille fixe à l'aide de l'option google_columnar_engine.memory_size_in_mb.

Kubernetes

Pour définir l'option google_columnar_engine.memory_size_in_mb, modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut parameters à la section primarySpec :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
  • COLUMN_MEMORY_SIZE : nouvelle taille du stockage en colonnes, en mégaoctets (par exemple, 256).

Configurer le cache de stockage

Vous pouvez configurer le cache de stockage du moteur de données en colonnes sur des appareils partagés ou dédiés.

Kubernetes

Appareils partagés

Pour activer le cache de stockage pour votre base de données sur des appareils partagés, modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut columnarSpillToDisk à la section features de la section primarySpec :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
  • STORAGE_CACHE_SIZE : taille du cache de stockage en colonnes, par exemple 5Gi. Si vous ne spécifiez pas de valeur pour ce champ, 5 % du cache du disque sont alloués par défaut au moteur de données en colonnes.
  • ULTRAFAST_CACHE_SIZE : taille du cache, par exemple 100Gi. Il doit être supérieur à shared_buffers. Ce champ est facultatif. Si vous ne spécifiez pas la valeur de ce champ, AlloyDB Omni utilise tout l'espace restant sur le disque, ce qui s'applique à la fois à AlloyDB Omni dans un conteneur et sur un cluster Kubernetes. Pour en savoir plus sur les unités de mesure, consultez Unités de ressource de mémoire.
  • STORAGE_CLASS_NAME : nom de la classe de stockage du volume de cache ultrarapide, par exemple local-storage.

Appareils dédiés

Par défaut, le cache de stockage du moteur de données en colonnes partage les mêmes appareils que le cache du disque AlloyDB Omni. Toutefois, vous pouvez configurer le moteur de données en colonnes pour qu'il utilise ses propres appareils dédiés pour son cache de stockage pour les raisons suivantes :

  • Vous n'avez pas besoin d'un cache de disque, car votre stockage principal se trouve déjà sur des disques SSD hautes performances. Dans ce scénario, vous pouvez créer un cache de stockage du moteur de données en colonnes sans avoir à allouer d'espace pour un cache du disque.
  • Vous souhaitez utiliser différents supports de stockage pour le cache de votre disque et celui de votre moteur de données en colonnes. Par exemple, vous pouvez utiliser un disque SSD standard pour le cache du disque et un disque SSD NVMe plus performant pour le cache de votre moteur de données en colonnes.
Utiliser un volume générique

Pour configurer un appareil dédié pour le cache de stockage du moteur de données en colonnes, modifiez votre fichier manifeste DBCluster pour ajouter l'attribut columnarSpillToDisk à la section features. Dans columnarSpillToDisk, vous pouvez ensuite spécifier un genericVolume avec un storageClass qui pointe vers l'espace de stockage que vous souhaitez utiliser pour le cache dédié du moteur de données en colonnes.

Voici un exemple de configuration d'un appareil dédié de 50 Gio pour le cache de stockage du moteur de données en colonnes à l'aide d'une classe de stockage nommée local-ssd :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
  • STORAGE_CACHE_SIZE : taille du cache de stockage en colonnes, par exemple 50Gi. Si vous ne spécifiez pas de valeur pour ce champ, 5 % du cache du disque sont alloués par défaut au moteur de données en colonnes.
  • STORAGE_CLASS_NAME : nom de la classe de stockage pour le volume de cache du moteur de données en colonnes dédié, par exemple local-ssd.
Utiliser un volume éphémère

Vous pouvez configurer le moteur de données en colonnes pour qu'il utilise un volume emptyDir éphémère pour son cache de stockage. Un volume emptyDir est créé lorsqu'un pod est attribué à un nœud. Il existe tant que le pod est exécuté sur le nœud. Lorsqu'un pod est supprimé d'un nœud, les données du volume emptyDir sont définitivement supprimées.

Pour configurer un volume emptyDir pour le cache de stockage en colonnes, modifiez votre fichier manifeste DBCluster pour ajouter l'attribut emptyDir à la section columnarSpillToDisk.

Voici un exemple de configuration d'un volume éphémère pour le cache de stockage en colonnes :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
  • STORAGE_CACHE_SIZE : taille du cache de stockage en colonnes, par exemple 50Gi.

Activer la jointure vectorisée

Le moteur de données en colonnes dispose d'une fonctionnalité de jointure vectorisée qui peut améliorer les performances des jointures en appliquant un traitement vectorisé aux requêtes éligibles.

Une fois la jointure vectorisée activée, le planificateur de requêtes AlloyDB peut appliquer l'opérateur de jointure vectorisée au lieu de l'opérateur de jointure de hachage PostgreSQL standard. Le planificateur prend cette décision en comparant le coût d'exécution de la requête à l'aide de chaque méthode.

Pour activer la jointure vectorisée sur une instance, définissez l'option google_columnar_engine.enable_vectorized_join de l'instance sur on.

Pour définir cette option sur un cluster de bases de données Kubernetes, ajoutez google_columnar_engine.enable_vectorized_join: "on" à la section parameters de votre fichier manifeste DBCluster. Pour en savoir plus, consultez Configurer des indicateurs de base de données AlloyDB Omni.

AlloyDB Omni alloue par défaut un thread à la fonctionnalité de jointure vectorisée. Vous pouvez augmenter le nombre de threads disponibles pour cette fonctionnalité en définissant l'option google_columnar_engine.vectorized_join_threads sur une valeur plus élevée. La valeur maximale est cpu_count * 2.

Actualiser manuellement votre moteur de données en colonnes

Par défaut, lorsque le moteur de données en colonnes est activé, il actualise le store orienté colonnes en arrière-plan.

Pour actualiser manuellement le moteur de données en colonnes, exécutez la requête SQL suivante :

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

Remplacez TABLE_NAME par le nom de la table ou de la vue matérialisée que vous souhaitez actualiser manuellement.

Désactiver le moteur de données en colonnes

Pour désactiver le moteur de données en colonnes sur une instance, définissez l'option google_columnar_engine.enabled sur off.

Kubernetes

Pour définir l'option google_columnar_engine.enabled sur off, modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut parameters à la section primarySpec :

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

Remplacez CLUSTER_NAME par le nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.

Étapes suivantes