kolumnfamiljer

en kolumnfamilj är en grupp kolumner i en tabell som lagras som ett enda nyckelvärdespar i det underliggande nyckelvärdelagret. Kolumnfamiljer minskar antalet nycklar som lagras i nyckelvärdesbutiken, vilket resulterar i förbättrad prestanda under INSERT, UPDATE och DELETE operationer.

den här sidan förklarar hur CockroachDB organiserar kolumner i familjer samt fall där du kanske vill manuellt åsidosätta standardbeteendet.

sekundära index respekterar kolumnfamiljdefinitionerna som tillämpas på tabeller. När du definierar ett sekundärt index bryter CockroachDB de sekundära indexnyckelvärdesparen i kolumnfamiljer, enligt familjen och lagrade kolumnkonfigurationer.

standardbeteende

när en tabell skapas lagras alla kolumner som en enda kolumnfamilj.

denna standardmetod säkerställer effektiv lagring av nyckelvärde och prestanda i de flesta fall. Men när ofta uppdaterade kolumner grupperas med sällan uppdaterade kolumner skrivs de sällan uppdaterade kolumnerna ändå om varje uppdatering. Speciellt när de sällan uppdaterade kolumnerna är stora är det mer performant att dela dem i en distinkt familj.

Manuell åsidosättning

tilldela kolumnfamiljer vid skapande av bord

för att manuellt tilldela en kolumnfamilj vid skapande av bord, använd nyckelordet FAMILY.

till exempel, låt oss säga att vi vill skapa en tabell för att lagra en oföränderlig klump av data (data BYTES) med en Senast åtkomlig tidsstämpel (last_accessed TIMESTAMP). Eftersom vi vet att blob av data aldrig kommer att uppdateras, använder vi nyckelordet FAMILY för att bryta den i en separat kolumnfamilj:

ikon / knappar / kopia
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
ikon / knappar / kopiera
> SHOW CREATE test;

tilldela kolumnfamiljer när du lägger till kolumner

när du använder ALTER TABLE .. ADD COLUMN – satsen för att lägga till en kolumn i en tabell kan du tilldela kolumnen till en ny eller befintlig kolumnfamilj.

  • använd nyckelordet CREATE FAMILY för att tilldela en ny kolumn till en ny familj. Till exempel skulle följande lägga till en data2 BYTES kolumn till test tabellen ovan och tilldela den till en ny kolumnfamilj:
ikon / knappar / kopiera
 > ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
  • använd nyckelordet FAMILY för att tilldela en ny kolumn till en befintlig familj. Till exempel skulle följande lägga till en name STRING kolumn till test tabellen ovan och tilldela den till familjen f1:
ikon / knappar / kopiera
 > ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
  • använd nyckelordet CREATE IF NOT EXISTS FAMILY för att tilldela en ny kolumn till en befintlig familj eller, om familjen inte finns, till en ny familj. Till exempel skulle följande tilldela den nya kolumnen till den befintliga f1 – familjen; om den familjen inte existerade skulle den skapa en ny familj och tilldela kolumnen till den:
ikon / knappar / kopiera
 > ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
  • om en kolumn läggs till i en tabell och familjen inte anges läggs den till i den första kolumnfamiljen. Till exempel skulle följande lägga till den nya kolumnen till familjen f1, eftersom det är den första kolumnfamiljen:
ikon / knappar / kopia
 > ALTER TABLE test ADD COLUMN last_name STRING;

Se även

  • CREATE TABLE
  • ADD COLUMN
  • andra SQL-satser

var den här sidan till hjälp?

Ja Nej

Lämna ett svar

Din e-postadress kommer inte publiceras.