- Índice primario disperso - Ordena los datos en disco según una clave elegida, lo que permite a ClickHouse omitir grandes rangos de filas irrelevantes durante las consultas.
- Tipos de datos mejorados - Compatibilidad nativa con tipos como JSON, LowCardinality y Enum, lo que permite un almacenamiento más compacto y un procesamiento más rápido.
- Índices de omisión y índices de texto completo - Estructuras de índice secundario que permiten a ClickHouse omitir gránulos que no coinciden con los predicados de filtrado de una consulta, especialmente eficaces para cargas de trabajo de búsqueda de texto.
- Inserciones rápidas con compactación automática - ClickHouse está diseñado para inserciones de alto rendimiento y fusiona automáticamente las partes de datos en segundo plano, de forma análoga a la compactación en formatos de tabla abiertos.
- Optimizado para lecturas concurrentes - La disposición de almacenamiento columnar de MergeTree, combinada con múltiples capas de caché, admite cargas de trabajo analíticas en tiempo real con alta concurrencia, algo para lo que los formatos de tabla abiertos no están diseñados.
INSERT INTO SELECT para acelerar el análisis.
Conéctese al catálogo
Listar tablas
Explora el esquema
Consulta en la tabla del lago de datos
logger_name pueden tener una cardinalidad demasiado alta para particionarlas de forma eficaz. Además, no tenemos índices como índices de texto para descartar aún más datos. Aquí es donde MergeTree destaca.
Cargar datos en MergeTree
Crear una tabla optimizada
- Sin envoltorios
Nullable: eliminarNullablemejora la eficiencia del almacenamiento y el rendimiento de las consultas. LowCardinality(String)en las columnaslevel,instance_type,thread_nameycheck_name: aplica codificación por diccionario a columnas con pocos valores distintos para mejorar la compresión y acelerar el filtrado.- Un índice de texto completo en la columna
message: acelera las búsquedas de texto basadas en tokens, comohasToken(message, 'error'). - Una clave
ORDER BYde(instance_type, thread_name, toStartOfMinute(event_time)): alinea los datos en disco con patrones de filtro habituales para que el índice primario disperso pueda omitir gránulos irrelevantes.
Insertar datos desde el catálogo
INSERT INTO SELECT para cargar los ~300 millones desde la tabla del lago de datos a nuestra tabla de ClickHouse:
Vuelve a ejecutar la consulta
- Índice primario disperso - La clave
ORDER BY (instance_type, thread_name, ...)permite que ClickHouse salte directamente a los gránulos que coinciden coninstance_type = 'm6i.4xlarge'ythread_name = 'TCPHandler', lo que reduce las filas procesadas de 283 millones a solo 14 millones. - Índice de texto completo - El índice
text_idxde la columnamessagepermite quehasToken(message, 'error')se resuelva mediante el índice, en lugar de analizar cada cadena de mensaje, lo que reduce aún más los datos que ClickHouse necesita leer.