Famiglie di colonne
Una famiglia di colonne è un gruppo di colonne in una tabella memorizzate come una singola coppia chiave-valore nell’archivio chiave-valore sottostante. Le famiglie di colonne riducono il numero di chiavi memorizzate nell’archivio chiave-valore, con conseguente miglioramento delle prestazioni durante le operazioni INSERT
, UPDATE
e DELETE
.
Questa pagina spiega come CockroachDB organizza le colonne in famiglie e casi in cui è possibile sovrascrivere manualmente il comportamento predefinito.
Gli indici secondari rispettano le definizioni della famiglia di colonne applicate alle tabelle. Quando si definisce un indice secondario, CockroachDB interrompe le coppie chiave-valore dell’indice secondario in famiglie di colonne, in base alla famiglia e alle configurazioni delle colonne memorizzate.
Comportamento predefinito
Quando viene creata una tabella, tutte le colonne vengono memorizzate come una singola famiglia di colonne.
Questo approccio predefinito garantisce un’archiviazione e prestazioni chiave-valore efficienti nella maggior parte dei casi. Tuttavia, quando le colonne aggiornate frequentemente sono raggruppate con colonne aggiornate raramente, le colonne aggiornate raramente vengono comunque riscritte ad ogni aggiornamento. Soprattutto quando le colonne raramente aggiornate sono grandi, è più performante dividerle in una famiglia distinta.
Comando manuale
Assegna famiglie di colonne alla creazione di tabelle
Per assegnare manualmente una famiglia di colonne alla creazione di tabelle, utilizzare la parola chiave FAMILY
.
Ad esempio, diciamo che vogliamo creare una tabella per memorizzare un blob immutabile di dati (data BYTES
) con un timestamp ultimo accesso (last_accessed TIMESTAMP
). Perché sappiamo che il blob di dati non aggiornati, usiamo il FAMILY
parola chiave per rompere in una colonna separata famiglia:
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
> SHOW CREATE test;
Assegnare colonna famiglie quando l’aggiunta di colonne
Quando si utilizza il ALTER TABLE .. ADD COLUMN
istruzione per aggiungere una colonna a una tabella, è possibile assegnare la colonna di un nuovo o esistente colonna di famiglia.
- Utilizzare la parola chiave
CREATE FAMILY
per assegnare una nuova colonna a una nuova famiglia. Ad esempio, quanto segue aggiungerebbe una colonnadata2 BYTES
alla tabellatest
sopra e la assegnerebbe a una nuova famiglia di colonne:
> ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
- Utilizzare la parola chiave
FAMILY
per assegnare una nuova colonna a una famiglia esistente. Ad esempio, quanto segue aggiungerebbe una colonnaname STRING
alla tabellatest
sopra e la assegnerebbe alla famigliaf1
:
> ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
- Utilizzare la parola chiave
CREATE IF NOT EXISTS FAMILY
per assegnare una nuova colonna a una famiglia esistente o, se la famiglia non esiste, a una nuova famiglia. Per esempio, il seguente assegnare la nuova colonna esistentef1
famiglia, se la famiglia non esiste, si verrebbe a creare una nuova famiglia e di assegnare l’articolo:
> ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
- Se una colonna è aggiunto a una tabella e la famiglia non è specificato, verrà aggiunto alla prima colonna della famiglia. Ad esempio, quanto segue aggiungerebbe la nuova colonna alla famiglia
f1
, poiché questa è la prima famiglia di colonne:
> ALTER TABLE test ADD COLUMN last_name STRING;
Vedi anche
CREATE TABLE
ADD COLUMN
- Altre Istruzioni SQL
questa pagina È utile?
Sì No