Familias de columnas
Una familia de columnas es un grupo de columnas de una tabla que se almacenan como un único par clave-valor en el almacén clave-valor subyacente. Las familias de columnas reducen el número de claves almacenadas en el almacén de clave-valor, lo que mejora el rendimiento durante las operaciones INSERT
, UPDATE
y DELETE
.
Esta página explica cómo CockroachDB organiza las columnas en familias, así como los casos en los que es posible que desee anular manualmente el comportamiento predeterminado.
Los índices secundarios respetan las definiciones de la familia de columnas aplicadas a las tablas. Al definir un índice secundario, CockroachDB divide los pares clave-valor del índice secundario en familias de columnas, de acuerdo con la familia y las configuraciones de columna almacenadas.
Comportamiento predeterminado
Cuando se crea una tabla, todas las columnas se almacenan como una sola familia de columnas.
Este enfoque predeterminado garantiza un almacenamiento y un rendimiento de clave-valor eficientes en la mayoría de los casos. Sin embargo, cuando las columnas que se actualizan con frecuencia se agrupan con columnas que se actualizan con poca frecuencia, las columnas que se actualizan con poca frecuencia se reescriben en cada actualización. Especialmente cuando las columnas rara vez actualizadas son grandes, es más eficiente dividirlas en una familia distinta.
Anulación manual
Asignar familias de columnas en la creación de tablas
Para asignar manualmente una familia de columnas en la creación de tablas, utilice la palabra clave FAMILY
.
Por ejemplo, digamos que queremos crear una tabla para almacenar un blob inmutable de datos (data BYTES
) con una marca de tiempo de último acceso (last_accessed TIMESTAMP
). Como sabemos que el blob de datos nunca se actualizará, usamos la palabra clave FAMILY
para dividirlo en una familia de columnas separada:
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
> SHOW CREATE test;
Asignar familias de columnas al agregar columnas
Al usar la instrucción ALTER TABLE .. ADD COLUMN
para agregar una columna a una tabla, puede asignar la columna a una familia de columnas nueva o existente.
- Utilice la palabra clave
CREATE FAMILY
para asignar una nueva columna a una nueva familia. Por ejemplo, lo siguiente agregaría una columnadata2 BYTES
a la tablatest
de arriba y la asignaría a una nueva familia de columnas:
> ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
- Utilice la palabra clave
FAMILY
para asignar una nueva columna a una familia existente. Por ejemplo, lo siguiente agregaría una columnaname STRING
a la tablatest
de arriba y la asignaría a la familiaf1
:
> ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
- Utilice la palabra clave
CREATE IF NOT EXISTS FAMILY
para asignar una nueva columna a una familia existente o, si la familia no existe, a una nueva familia. Por ejemplo, lo siguiente asignaría la nueva columna a la familiaf1
existente; si esa familia no existiera, crearía una nueva familia y le asignaría la columna:
> ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
- Si se agrega una columna a una tabla y no se especifica la familia, se agregará a la primera familia de columnas. Por ejemplo, lo siguiente añadiría la nueva columna a la familia
f1
, ya que es la primera familia de columnas:
> ALTER TABLE test ADD COLUMN last_name STRING;
Ver también
CREATE TABLE
ADD COLUMN
- Otras Instrucciones SQL
esta página Fue útil?
Sí No