¿Qué son las partes de tabla en ClickHouse?
Los datos de cada tabla de la familia de motores MergeTree de ClickHouse se organizan en disco como una colección de
partes de datos inmutables.
Para ilustrarlo, usamos esta tabla (adaptada del conjunto de datos de precios de viviendas del Reino Unido) que registra la fecha, la localidad, la calle y el precio de las propiedades vendidas en el Reino Unido:
Cuando un servidor de ClickHouse procesa la inserción de ejemplo con 4 filas (por ejemplo, mediante una sentencia INSERT INTO) ilustrada en el diagrama anterior, realiza varios pasos:
1
Ordenación
Las filas se ordenan según la clave de ordenación de la tabla
(town, street) y se genera un índice primario disperso para las filas ordenadas.2
División
Los datos ordenados se dividen en columnas.
3
Compresión
Cada columna se comprime.
4
Escritura en disco
Las columnas comprimidas se guardan como archivos binarios de columna dentro de un nuevo directorio que representa la parte de datos de la inserción. El índice primario disperso también se comprime y se almacena en el mismo directorio.
Fusiones de partes
Para minimizar el número de partes iniciales y la sobrecarga de las fusiones, se recomienda a los clientes de base de datos insertar tuplas en bloque, por ejemplo, 20.000 filas de una sola vez, o usar el modo de inserción asíncrona, en el que ClickHouse almacena en un búfer filas de varias operaciones INSERT dirigidas a la misma tabla y crea una nueva parte solo cuando el tamaño del búfer supera un umbral configurable o vence un tiempo de espera.
Supervisión de las partes de tabla
_part: