Cette rubrique décrit les principales modifications apportées à Alibaba Cloud ClickHouse édition compatible communautaire 26.3 LTS, notamment les nouvelles fonctionnalités, les optimisations des performances et les améliorations.
Vue d'ensemble
L'édition compatible communautaire d'Alibaba Cloud ClickHouse publie la nouvelle version à long terme (LTS) 26.3. En tant que version annuelle majeure succédant à la 25.3 LTS, la version 26.3 se concentre sur un data lake unifié pour les données par lots et en continu, un index inversé natif, la stabilité des écritures à forte concurrence, l'optimisation des requêtes complexes et l'extensibilité de l'écosystème ouvert.
Points forts
|
Catégorie |
Principales améliorations |
Valeur métier |
|
Écosystème data lake |
Prise en charge native d'Apache Paimon et montage automatique de DataLakeCatalog |
Requêtes lakehouse transparentes avec accès instantané pour les scénarios d'ingestion Flink CDC |
|
Index inversé natif |
Disponibilité générale (GA) de l'index inversé avec une amélioration de 7 à 10 fois pour la recherche dans les journaux et le texte |
Remplacez les moteurs de recherche externes pour réduire les coûts de stockage et d'O&M |
|
Accélération du data lake et d'OSS |
Cache SLRU du pied de page Parquet et préchargement des métadonnées Iceberg |
Accélération de 2 à 5 fois pour les requêtes intensives en E/S et les analyses de tables externes OSS |
|
Optimisation des requêtes complexes |
CTE matérialisée et réordonnancement intelligent des JOIN pour tous les types de JOIN |
Amélioration significative des rapports complexes et de l'analyse multidimensionnelle |
|
Données haute dimension et TTL des tables larges |
Map partitionnée avec une amélioration de 2 à 49 fois des recherches ponctuelles et fusion verticale TTL |
Réduction de la latence des requêtes ponctuelles et diminution de la consommation mémoire pour le nettoyage en arrière-plan |
|
Écosystème ouvert |
Compatibilité avec 31 dialectes SQL |
Migrez les charges de travail SQL multi-moteurs sans modifier le code |
Écosystème data lake : Apache Paimon et Catalog unifié
De la version 25.3 à la 26.3 LTS, les capacités d'analytique des data lakes de ClickHouse ont été considérablement améliorées :
Prise en charge native d'Apache Paimon : La version 26.3 LTS fournit la fonction de table
paimonnative et le moteur de table Paimon (y compris la requête parallèle sur cluster viapaimonCluster). Analysez efficacement en lecture seule les tables Paimon stockées dans OSS, S3 ou HDFS, ce qui est idéal pour les scénarios d'ingestion de data lake Flink CDC.Montage automatique de DataLakeCatalog : Les métastores externes tels que Hive Metastore, AWS Glue et Alibaba Cloud DLF peuvent être montés directement en tant que bases de données ClickHouse. Le moteur détecte automatiquement les tables Iceberg, Paimon, Delta Lake et Hudi dans le catalog sans création manuelle de table.
-
Accélération des requêtes de data lake multidimensionnelles :
Cache SLRU du pied de page Parquet : Activé par défaut avec
use_parquet_metadata_cache = 1. Réduisez les demandes de lecture E/S jusqu'à 50 % pour les requêtes répétées sur les mêmes fichiers Parquet.Préchargement asynchrone des métadonnées Iceberg : Le paramètre
iceberg_metadata_async_prefetch_period_msmaintient les métadonnées locales à jour en arrière-plan, éliminant ainsi les goulots d'étranglement du catalog distant.Extraction incrémentielle S3Queue : Le mode ordonné utilise désormais la sémantique
StartAfterpour réduire la fréquence deListObjects, abaissant ainsi les coûts et la latence de l'API OSS.
Recherche en texte intégral : Disponibilité générale (GA) de l'index inversé natif
Les capacités natives d'index inversé et de recherche en texte intégral de la version 26.3 LTS sont désormais prêtes pour la production (GA).
Amélioration significative des performances : Dans les scénarios de correspondance floue de texte et de recherche par mot-clé, les performances des requêtes à froid s'améliorent de 7 à 10 fois avec l'activation de l'index inversé. Dans le benchmark de requête de journal GitHub Events, la latence des recherches complexes passe de 193 secondes à 0,42 seconde.
Compatibilité SQL transparente : Aucun plugin de recherche externe Elasticsearch ou tiers n'est requis. Créez un index en utilisant
INDEX idx_text content TYPE invertedpour accélérer automatiquement les requêtesHAS(),LIKE / ILIKEet l'extraction de champs JSON.Faibles coûts de stockage et de calcul : Basée sur la structure d'index inversé en colonnes de ClickHouse, la taille de l'index est bien inférieure à celle des moteurs de recherche traditionnels, ce qui réduit considérablement les coûts de stockage pour les scénarios d'analytique des journaux, des traces et du texte.
Calcul et optimiseur
CTE matérialisée
La version 26.3 LTS introduit la syntaxe CTE matérialisée. En utilisant le mot-clé MATERIALIZED, ClickHouse stocke les résultats CTE dans une table temporaire en mémoire pour éviter les calculs redondants et améliorer l'efficacité d'exécution des requêtes SQL complexes de reporting et d'analyse multidimensionnelle.
Exemple :
SET enable_materialized_cte = 1;
WITH top_users AS MATERIALIZED (
SELECT user_id, count() AS cnt
FROM events
GROUP BY user_id
ORDER BY cnt DESC
LIMIT 1000
)
SELECT *
FROM top_users
INNER JOIN (SELECT user_id FROM top_users WHERE ...) ON ...;
Réordonnancement intelligent des JOIN pour tous les types de JOIN
L'optimiseur basé sur les coûts (CBO) de la version 26.3 LTS prend désormais en charge l'inversion automatique des côtés Build/Probe pour LEFT ANTI JOIN, SEMI JOIN et FULL JOIN, en plus des INNER JOIN et LEFT/RIGHT JOIN standards. L'optimiseur construit automatiquement la table de hachage à partir du côté le plus petit en fonction des statistiques de la table, empêchant ainsi les erreurs de dépassement de mémoire (OOM) causées par un ordre SQL manuel inapproprié.
Moteur de stockage et types de données
Map partitionnée
Pour les scénarios où le type Map stocke des tags de profil utilisateur et des fonctionnalités dynamiques, la version 26.3 LTS introduit une disposition de sérialisation physique compartimentée. Les recherches par clé unique s'améliorent de 2 à 49 fois car les données au sein de la Map sont compartimentées par hachage selon la clé.
Exemple :
CREATE TABLE user_profiles (
id UInt64,
attributes Map(String, UInt64)
) ENGINE = MergeTree
ORDER BY id
SETTINGS map_serialization_version = 'with_buckets', max_buckets_in_map = 32;
Nettoyage TTL des tables larges : Fusion verticale
La version 26.3 LTS introduit un algorithme de fusion verticale pour les opérations TTL DELETE. La fusion privilégie le filtrage des clés primaires et des colonnes TTL sans lire les colonnes larges non pertinentes, ce qui réduit considérablement les frais généraux d'E/S et de mémoire lors du nettoyage des données en arrière-plan.
Codec de compression flottante sans perte adaptatif (ALP)
Un nouveau codec de compression flottante sans perte CODEC(ALP, ZSTD) est disponible. ALP (Adaptive Lossless floating-Point) est optimisé pour les données Float32 et Float64 dans les scénarios de surveillance industrielle et de métriques de séries temporelles, offrant de meilleurs taux de compression et une vitesse de décompression que l'encodage Gorilla classique.
Écosystème ouvert : Compatibilité des dialectes SQL multi-moteurs (Polyglot)
En intégrant la bibliothèque d'analyse Polyglot open source, la version 26.3 LTS prend nativement en charge 31 dialectes SQL de bases de données externes, y compris Snowflake, BigQuery, PostgreSQL, Spark, Presto et DuckDB. Il vous suffit de configurer les paramètres suivants :
SET dialect = 'polyglot', polyglot_dialect = 'snowflake';
Vous pouvez ensuite réutiliser vos charges de travail SQL existantes.
Optimisations clés des performances
Exécution des requêtes et optimiseur
Le cache des conditions de requête, la compilation JIT des expressions et les filtres d'exécution JOIN sont activés par défaut pour réduire les analyses répétées et la surcharge des JOIN de grandes tables.
RIGHT JOIN et FULL JOIN utilisent ConcurrentHashJoin, avec une amélioration des performances allant jusqu'à 2 fois dans certains scénarios. Une nouvelle optimisation de l'ordre des JOIN réorganise automatiquement les JOIN multi-tables en fonction des statistiques.
L'élagage des index de clés primaires et de clés de partition est étendu : les clés primaires prennent en charge des expressions déterministes arbitraires pour ignorer les données, et les clés de partition enveloppées dans des chaînes de fonctions déterministes peuvent toujours être élaguées.
Les requêtes
ORDER BY ... LIMIT Npeuvent réduire considérablement le nombre de lignes analysées grâce aux index skip et aux filtres de seuil dynamique.
Moteur de stockage et saut de données
Le lecteur Parquet v3 est activé par défaut avec la poussée de filtre au niveau de la page et la prise en charge de PREWHERE. Les lectures de data lake ajustent automatiquement les pipelines en fonction des threads de traitement, atteignant une amélioration d'environ 40 fois sur les machines multicœurs.
Le filtrage par index skip en flux pendant les lectures est activé par défaut. Les index de texte prennent en charge davantage de formes de prédicats et peuvent être utilisés dans PREWHERE.
Dans les scénarios d'élagage de partitions intensif, les requêtes SELECT sur des tables comportant plus de 10 000 parties sont jusqu'à 8 fois plus rapides. Les tables Iceberg prennent en charge l'optimisation PREWHERE et le préchargement asynchrone des métadonnées.
Exécution distribuée et parallèle
INSERT SELECT distribué parallèle est activé par défaut et exécuté indépendamment sur chaque shard. Les sous-requêtes IN distribuées ajoutent automatiquement DISTINCT pour réduire le transfert de données temporaires entre shards.
L'analyse d'index distribuée prend en charge SharedMergeTree et les scénarios de stockage partagé. Les réplicas parallèles prennent en charge la matérialisation paresseuse avec une meilleure répartition de la charge pour réduire la latence de longue traîne.
Fonctions et index
LIKE et les expressions régulières sont automatiquement réécrits vers des implémentations plus efficaces et activés par défaut. StringZilla accélère la recherche de chaînes sensible à la casse, et la distribution dynamique SIMD accélère les fonctions logiques et la conversion des colonnes booléennes.
Mémoire, observabilité et réseau
Les caches de marques, non compressés et de pages utilisent des arènes jemalloc indépendantes pour réduire la fragmentation. Les pages sales de jemalloc sont nettoyées dans des threads indépendants. Les tables de journaux système ajoutent des index minmax et bloom_filter pour accélérer le dépannage.
La sérialisation et la compression des blocs dans les requêtes distribuées peuvent être déléguées aux threads de pipeline pour améliorer l'efficacité du transfert de données volumineuses.
Benchmark de performances : Comparaison ClickBench
Sur la base du benchmark officiel de la version ClickBench (perspective des requêtes à froid), la version 26.3 LTS réalise une amélioration continue des performances par rapport à la version LTS précédente 25.3 :
|
Métrique |
Amélioration de la 26.3 LTS par rapport à la 25.3 LTS |
|
Latence globale des requêtes à froid |
Réduction de 8 à 15 % du temps total |
|
Analyse du data lake et du stockage |
Accélération de 2 à 5 fois pour les requêtes intensives en E/S et les analyses de tables externes OSS |
|
Compaction TTL des tables larges |
Utilisation maximale de la mémoire réduite de plus de 40 % |
|
Recherche de texte et de journaux |
La latence des recherches complexes est réduite de 193 secondes à 0,42 seconde avec l'index inversé |
|
Recherche ponctuelle Map haute dimension |
Amélioration de 2 à 49 fois de la recherche par clé unique avec la Map partitionnée |
Fonctionnalités utilitaires
La version 26.3 LTS comprend également un ensemble de fonctionnalités qui améliorent l'expérience de développement et d'O&M :
Tri naturel (naturalSortKey) : Trie les chaînes contenant des nombres dans un ordre intuitif pour l'homme. Par exemple,
file2.txtest correctement trié avantfile10.txt.Sortie EXPLAIN sous forme d'arbre : Exécutez
EXPLAIN pretty=1, compact=1pour obtenir un arbre de plan d'exécution visuel et bien structuré.Tolérance aux pannes des shards indisponibles : Les paramètres
max_skip_unavailable_shards_numetmax_skip_unavailable_shards_ratiofournissent un contrôle limité sur le ratio de nœuds en panne pouvant être ignorés lors des requêtes sur de grandes tables dans un cluster.
Recommandations de mise à niveau
Préparation avant la mise à niveau
Clonage ou vérification de l'environnement de test : Déployez d'abord la nouvelle version dans un environnement cloné ou de test pour évaluer l'impact des changements de version sur les configurations et les requêtes existantes.
Vérifiez la compatibilité des dépendances : Confirmez la compatibilité des pilotes clients et des outils tiers avec la nouvelle version.
Remarques importantes
Validation des fonctionnalités expérimentales : Les CTE matérialisées et les dialectes Polyglot sont marqués comme expérimentaux dans cette version. Nous vous recommandons de valider ces fonctionnalités dans un cluster de test avant de les utiliser en production.
Tests de régression des performances : Après la mise à niveau, comparez le temps d'exécution des requêtes clés pour vous assurer que les optimisations telles que le cache Parquet, l'index inversé et le réordonnancement des JOIN prennent effet.
Ajustement de la surveillance et des alertes : Ajustez les seuils de surveillance en fonction des nouvelles métriques et des modifications.
Résumé
ClickHouse 26.3 LTS est une version à la fois large et profonde :
Au niveau du data lake et de l'écosystème ouvert, la prise en charge native de Paimon et la compatibilité avec 31 dialectes SQL comblent le fossé entre l'intégration lakehouse et la réutilisation multi-moteurs.
Au niveau des requêtes et de l'analytique, les index inversés GA, les CTE matérialisées, le réordonnancement des JOIN et les Maps partitionnées étendent considérablement les capacités de ClickHouse dans la recherche de journaux, l'analyse complexe et les recherches ponctuelles haute dimension.
Au niveau de la stabilité et des coûts, la fusion verticale TTL et le codec ALP réduisent la complexité opérationnelle du nettoyage des données et de la compression du stockage.
L'équipe Alibaba Cloud ClickHouse a terminé l'adaptation cloud et la vérification de compatibilité complète pour la version communautaire 26.3 LTS. Créez rapidement une instance 26.3 LTS ou mettez à niveau votre instance existante vers la dernière version dans la console Alibaba Cloud ClickHouse pour bénéficier d'une analytique en temps réel plus efficace et stable.