Familles de colonnes
Une famille de colonnes est un groupe de colonnes d’une table qui sont stockées sous la forme d’une seule paire clé-valeur dans le magasin clé-valeur sous-jacent. Les familles de colonnes réduisent le nombre de clés stockées dans le magasin clé-valeur, ce qui améliore les performances lors des opérations INSERT
, UPDATE
et DELETE
.
Cette page explique comment CockroachDB organise les colonnes en familles ainsi que les cas dans lesquels vous pouvez vouloir remplacer manuellement le comportement par défaut.
Les index secondaires respectent les définitions des familles de colonnes appliquées aux tables. Lorsque vous définissez un index secondaire, CockroachDB divise les paires clé-valeur d’index secondaire en familles de colonnes, en fonction de la famille et des configurations de colonnes stockées.
Comportement par défaut
Lorsqu’une table est créée, toutes les colonnes sont stockées dans une seule famille de colonnes.
Cette approche par défaut garantit un stockage et des performances clés-valeurs efficaces dans la plupart des cas. Cependant, lorsque des colonnes fréquemment mises à jour sont regroupées avec des colonnes rarement mises à jour, les colonnes rarement mises à jour sont néanmoins réécrites à chaque mise à jour. Surtout lorsque les colonnes rarement mises à jour sont grandes, il est plus performant de les diviser en une famille distincte.
Remplacement manuel
Assigner des familles de colonnes lors de la création d’une table
Pour attribuer manuellement une famille de colonnes lors de la création d’une table, utilisez le mot-clé FAMILY
.
Par exemple, disons que nous voulons créer une table pour stocker un blob immuable de données (data BYTES
) avec un horodatage du dernier accès (last_accessed TIMESTAMP
). Parce que nous savons que le blob de données ne sera jamais mis à jour, nous utilisons le mot-clé FAMILY
pour le diviser en une famille de colonnes distincte:
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
> SHOW CREATE test;
Attribuer des familles de colonnes Lors de l’ajout de colonnes
Lorsque vous utilisez l’instruction ALTER TABLE .. ADD COLUMN
pour ajouter une colonne à une table, vous pouvez affecter la colonne à une famille de colonnes nouvelle ou existante.
- Utilisez le mot clé
CREATE FAMILY
pour affecter une nouvelle colonne à une nouvelle famille. Par exemple, ce qui suit ajouterait une colonnedata2 BYTES
à la tabletest
ci-dessus et l’affecterait à une nouvelle famille de colonnes:
> ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
- Utilisez le mot clé
FAMILY
pour attribuer une nouvelle colonne à une famille existante. Par exemple, ce qui suit ajouterait une colonnename STRING
à la tabletest
ci-dessus et l’affecterait à la famillef1
:
> ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
- Utilisez le mot clé
CREATE IF NOT EXISTS FAMILY
pour attribuer une nouvelle colonne à une famille existante ou, si la famille n’existe pas, à une nouvelle famille. Par exemple, ce qui suit affecterait la nouvelle colonne à la famillef1
existante ; si cette famille n’existait pas, elle créerait une nouvelle famille et lui affecterait la colonne:
> ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
- Si une colonne est ajoutée à une table et que la famille n’est pas spécifiée, elle sera ajoutée à la première famille de colonnes. Par exemple, ce qui suit ajouterait la nouvelle colonne à la famille
f1
, car il s’agit de la première famille de colonnes:
> ALTER TABLE test ADD COLUMN last_name STRING;
Voir aussi
CREATE TABLE
ADD COLUMN
- Autres Instructions SQL
Cette page vous a-t-elle été utile ?
Oui Non