Descripción
Contiene una fila por cada entrada almacenada actualmente en la caché de columnas deserializadas. La caché mantiene en memoria las columnas de las partes de datos deMergeTree que ya se han leído y deserializado, de modo que las lecturas repetidas del mismo rango de filas no vuelven a pagar el coste de la descompresión y la deserialización.
Cada entrada corresponde a un rango contiguo de gránulos [row_begin, row_end) de una única columna de una única parte de datos, dentro de una franja fija de la parte de unas 65536 filas. Las lecturas se sirven desde la caché gránulo a gránulo, y las franjas son las mismas en todas las lecturas de la parte, por lo que las entradas no dependen de cómo una consulta divida la parte en rangos de marcas: una lectura que solo accede a algunos gránulos de una franja almacena en caché únicamente esos gránulos, y los rangos adyacentes escritos por distintas lecturas se fusionan.
La caché identifica las entradas por el UUID de la tabla, por lo que solo está activa para tablas de bases de datos que asignan UUID, como Atomic, Replicated y Shared (el motor de base de datos predeterminado en ClickHouse Cloud). Las tablas de las bases de datos heredadas Ordinary no tienen UUID y quedan excluidas de la caché sin aviso. Solo las partes anchas (wide) participan en la caché; las partes compactas quedan excluidas sin aviso.
La caché se controla mediante los ajustes de servidor columns_cache_size (de forma predeterminada, columns_cache_size_to_ram_ratio de la memoria disponible para el servidor) y columns_cache_size_ratio, y mediante los ajustes de consulta use_columns_cache, enable_reads_from_columns_cache, enable_writes_to_columns_cache, columns_cache_max_estimated_bytes_to_write_to_cache y columns_cache_max_bytes_to_write_to_cache. Puede vaciarse manualmente con SYSTEM DROP COLUMNS CACHE.
Las filas se filtran según los derechos de acceso: una entrada solo es visible para los usuarios que pueden ver tanto su tabla como su columna, es decir, que tienen SHOW TABLES sobre la tabla y SHOW COLUMNS sobre la columna. Conceder SHOW COLUMNS sobre *.* no anula una revocación sobre una tabla o columna concreta, ya que esta tabla expone datos operativos (nombres de partes, rangos de filas y tamaños en caché) y no solo el esquema. Las entradas de una tabla que ya no existe no tienen ningún nombre que comprobar, por lo que solo son visibles para los usuarios que tienen SHOW COLUMNS a nivel global.
Columnas
database(String) — Nombre de la base de datos de la tabla a la que pertenece la parte.table(String) — Nombre de la tabla.table_uuid(UUID) — UUID de la tabla. No cambia aunque se cambie el nombre de la tabla.part(String) — Nombre de la parte de datos.column(String) — Nombre de la columna.row_begin(UInt64) — Índice de la fila inicial del rango almacenado en caché (incluido).row_end(UInt64) — Índice de la fila final del rango almacenado en caché (excluido).rows(UInt64) — Número de filas del rango almacenado en caché (row_end - row_begin).bytes(UInt64) — Memoria que ocupa la entrada, en bytes: el tamaño asignado de la columna almacenada en caché más una pequeña sobrecarga por entrada. Este es el valor con el que se limita la caché, por lo que la suma de esta columna para todas las entradas no superacolumns_cache_size. Puede ser mayor que el tamaño lógico de las filas, ya que una columna conserva la capacidad con la que se asignó.
Ejemplos
Memoria total utilizada por las columnas almacenadas en caché, por tabla:Véase también
- SYSTEM DROP COLUMNS CACHE — Sentencia que elimina todas las entradas de la caché de columnas.