Une technique de gestion des donnéesLe partitionnement est avant tout une technique de gestion des données, et non un outil d’optimisation des requêtes. S’il peut améliorer les performances pour certaines charges de travail, ce ne doit pas être le premier mécanisme utilisé pour accélérer les requêtes ; la clé de partitionnement doit être choisie avec soin, avec une compréhension claire de ses implications, et ne doit être utilisée que lorsqu’elle répond aux besoins du cycle de vie des données ou à des schémas d’accès bien compris.
PARTITION BY lors de la création de la table et sert couramment à regrouper les lignes par intervalles de temps, catégories ou autres dimensions métier pertinentes. Chaque valeur unique de l’expression de partitionnement forme sa propre partition physique sur disque, et ClickHouse stocke les données dans des parts distinctes pour chacune de ces valeurs. Le partitionnement améliore la gestion des données, simplifie les politiques de rétention et peut être utile pour certains types de requêtes.
Par exemple, considérons la table suivante du jeu de données UK price paid, avec toStartOfMonth(date) comme clé de partitionnement.
toStartOfMonth(date). Ensuite, pour chaque partition identifiée, les lignes sont traitées comme d’habitude en exécutant plusieurs étapes séquentielles (① Tri, ② Découpage en colonnes, ③ Compression, ④ Écriture sur disque).
Pour une explication plus détaillée du partitionnement, nous recommandons ce guide.
Lorsque le partitionnement est activé, ClickHouse fusionne les parts de données uniquement au sein d’une même partition, et non entre plusieurs partitions. Nous l’illustrons pour notre table d’exemple ci-dessus :
Applications du partitionnement
Choisissez une clé de partitionnement à faible cardinalité
toStartOfMonth(date) permet au moteur d’ignorer entièrement les partitions non pertinentes et leurs parts.
Bien que le partitionnement puisse améliorer les performances pour certains types de requêtes, il s’agit avant tout d’une fonctionnalité de gestion des données. Dans de nombreux cas, interroger l’ensemble des partitions peut être plus lent qu’utiliser une table non partitionnée, en raison d’une fragmentation accrue des données et d’un plus grand nombre de parts à analyser. Utilisez donc le partitionnement avec discernement et veillez toujours à ce que la clé choisie soit à faible cardinalité et cohérente avec les politiques de cycle de vie de vos données (par ex., la rétention via TTL). Si vous ne savez pas si le partitionnement est nécessaire, il peut être préférable de commencer sans partitionnement, puis d’optimiser plus tard en fonction des schémas d’accès observés.