Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Performance tuning for Paimon tables

Dernière mise à jour :Aug 09, 2026

Cette rubrique explique comment améliorer les performances d'écriture et de lecture des tables à clé primaire et des tables extensibles par ajout (append scalable) d'Apache Paimon (Paimon) dans Realtime Compute for Apache Flink.

Limites

Les tables Paimon sont prises en charge uniquement dans Realtime Compute for Apache Flink utilisant Ververica Runtime (VVR) version 8.0.5 ou ultérieure.

Tables à clé primaire

Optimiser les performances d'écriture

La compaction des petits fichiers bloque les opérations d'écriture dans les tables à clé primaire Paimon. Lorsqu'un compartiment (bucket) contient de nombreux petits fichiers, ou lorsque le paramètre changelog-producer est défini sur lookup, la compaction doit se terminer avant la finalisation de chaque point de contrôle (checkpoint). Si la compaction prend trop de temps, les points de contrôle expirent, ce qui entraîne une contre-pression et une réduction du débit.

Pour résoudre les problèmes de performances d'écriture, choisissez une ou plusieurs des méthodes suivantes en fonction de votre charge de travail :

  • Ajuster le parallélisme du sink — Adaptez le nombre de workers de sink à votre volume d'écriture.

  • Ajuster les paramètres des points de contrôle — Augmentez l'intervalle entre les points de contrôle ou autorisez les points de contrôle concurrents.

  • Activer la compaction entièrement asynchrone — Dissociez la compaction du cycle des points de contrôle afin que les écritures ne soient jamais bloquées.

  • Changer le format de fichier vers Avro — Réduisez la surcharge d'écriture lorsque les requêtes ad hoc OLAP (Online Analytical Processing) ne sont pas nécessaires.

  • Limiter la taille des fichiers temporaires locaux — Plafonnez l'utilisation du disque due aux tampons d'écriture déversés (spilled).

Ajuster le parallélisme du sink

Utilisez les SQL Hints pour définir le paramètre sink.parallelism. L'augmentation du parallélisme répartit la charge d'écriture et de compaction sur davantage de workers, réduisant ainsi le risque qu'un seul compartiment devienne un goulot d'étranglement. Notez qu'un parallélisme plus élevé augmente également la consommation de ressources.

Ajuster les paramètres des points de contrôle

Étant donné que les performances d'écriture dans Paimon sont étroitement liées à la fréquence des points de contrôle, l'ajustement du comportement des points de contrôle est souvent le moyen le plus rapide de réduire la contre-pression.

Utilisez n'importe quelle combinaison des ajustements suivants :

  • Augmentez l'intervalle des points de contrôle en configurant execution.checkpointing.interval. Pour les étapes de configuration, consultez la rubrique How do I configure parameters for deployment running?

    Important

    L'intervalle des points de contrôle affecte directement la latence des données — le temps écoulé entre l'écriture des données et leur disponibilité pour la consommation. N'augmentez cet intervalle que si votre charge de travail tolère une latence plus élevée.

  • Ajoutez execution.checkpointing.max-concurrent-checkpoints: 3 pour permettre l'exécution simultanée de jusqu'à trois points de contrôle. Cela réduit l'impact des points de contrôle lents sur le débit global.

  • Basculez vers un déploiement par lots pour éliminer totalement la surcharge des points de contrôle.

Activer la compaction entièrement asynchrone

Par défaut, la compaction est synchronisée avec le cycle des points de contrôle. La compaction entièrement asynchrone rompt cette dépendance : la compaction s'exécute en arrière-plan dès que des ressources sont disponibles, et les points de contrôle progressent sans attendre la fin de la compaction.

La contrepartie est que les petits fichiers peuvent s'accumuler pendant les périodes d'écriture intense. Cela n'affecte pas la consommation en flux continu, mais dégrade les performances de consommation par lots et des requêtes OLAP jusqu'à ce que la compaction en arrière-plan rattrape son retard. Surveillez le nombre de petits fichiers dans chaque compartiment à l'aide de la table files fournie par Paimon.

Configurez les paramètres suivants à l'aide de l'instruction ALTER TABLE ou des SQL Hints :

'num-sorted-run.stop-trigger' = '2147483647',
'sort-spill-threshold' = '10',
'changelog-producer.lookup-wait' = 'false'
Paramètre Type Valeur par défaut Description
num-sorted-run.stop-trigger Entier 5 Le nombre maximal de petits fichiers autorisés dans un compartiment avant que les écritures ne soient mises en pause jusqu'à ce que la compaction rattrape son retard. Définir cette valeur sur 2147483647 désactive efficacement le seuil de pause d'écriture, permettant à la compaction de s'exécuter entièrement en arrière-plan. Un grand nombre de petits fichiers réduit l'efficacité de la consommation par lots et des requêtes OLAP, mais a un impact minimal sur la consommation en flux continu.
sort-spill-threshold Entier N/A Le nombre de petits fichiers à partir duquel le tri fusion en mémoire bascule vers un tri externe. Configurez ce paramètre pour éviter l'épuisement de la mémoire heap lorsque les petits fichiers s'accumulent. Si vous ne savez pas par où commencer, définissez-le sur 10.
changelog-producer.lookup-wait Booléen true Contrôle si le sink attend la génération du changelog (qui implique la compaction) avant de terminer un point de contrôle. Définissez-le sur false pour permettre aux tâches ayant terminé la compaction de continuer le traitement sans attendre les autres. Lorsqu'il est défini sur false, la durée du point de contrôle ne reflète plus la latence de traitement des données. Ce paramètre s'applique uniquement lorsque changelog-producer est défini sur lookup.

Changer le format de fichier vers Avro

Si votre activité se concentre sur la consommation par lots ou en flux continu et ne nécessite pas de requêtes ad hoc OLAP, configurez les paramètres suivants pour modifier le format des fichiers de données et désactiver la collecte de statistiques. Cela améliore l'efficacité des opérations d'écriture.

Configurez les paramètres suivants lors de la création de la table :

'file.format' = 'avro',
'metadata.stats-mode' = 'none'
Remarque

Ces paramètres doivent être définis lors de la création de la table. Vous ne pouvez pas modifier le format de fichier d'une table existante.

Limiter la taille des fichiers temporaires locaux

Définissez write-buffer-spill.max-disk-size dans les SQL Hints pour plafonner l'espace disque maximal utilisé par les tampons d'écriture déversés. Cela empêche les workers d'écriture de consommer excessivement le disque local.

Optimiser les performances de lecture

Ajuster le parallélisme de la source

Utilisez les SQL Hints pour définir le paramètre scan.parallelism de la source Paimon. L'augmentation de cette valeur permet à davantage de lecteurs parallèles de traiter les données simultanément.

Utiliser la table optimisée pour la lecture

Lors de la consommation par lots, de la phase de scan complet de la consommation en flux continu et des requêtes ad hoc OLAP, Paimon doit fusionner les données des petits fichiers en mémoire à l'aide d'un tri fusion. Un grand nombre de petits fichiers ralentit considérablement ce processus.

Si vous n'avez pas besoin de consommer les données les plus récentes, vous pouvez utiliser la table read-optimized pour améliorer l'efficacité de la consommation. Lorsque vous avez activé la compaction entièrement asynchrone pour maximiser le débit d'écriture, les petits fichiers s'accumulent plus vite qu'ils ne sont fusionnés ; dans ce cas, l'utilisation de la table optimisée pour la lecture afin de lire uniquement les données déjà compactées améliore les performances de lecture, au prix de la non-visibilité des enregistrements écrits très récemment.

Limiter la taille du cache de jointure par recherche

Lors de l'exécution de jointures par recherche (lookup joins) sur une table Paimon, les fichiers mis en cache peuvent croître sans limite. Configurez les paramètres suivants dans les SQL Hints pour contrôler la croissance du cache :

  • lookup.cache-max-disk-size — L'espace disque maximal utilisé par le cache de recherche.

  • lookup.cache-file-retention — La durée de conservation des fichiers mis en cache avant expiration.

Tables extensibles par ajout

Optimiser les performances d'écriture

Le débit d'écriture des tables extensibles par ajout est déterminé par le parallélisme du sink et la bande passante du système de fichiers sous-jacent ou d'Object Storage Service (OSS). Avant d'ajuster les paramètres, vérifiez que votre système de stockage dispose d'une bande passante suffisante pour prendre en charge votre taux d'écriture cible. Appliquez ensuite les optimisations suivantes :

  • Ajuster le parallélisme du sink — Adaptez le nombre de workers de sink à votre volume d'écriture.

  • Résoudre le déséquilibre des données (data skew) — Forcez un brassage (shuffle) entre l'opérateur en amont et le sink lorsque les données en amont sont inégalement distribuées.

  • Limiter la taille des fichiers temporaires locaux — Plafonnez l'utilisation du disque due aux tampons d'écriture déversés.

Ajuster le parallélisme du sink

Utilisez les SQL Hints pour définir le paramètre sink.parallelism. Notez qu'un parallélisme plus élevé augmente la consommation de ressources.

Résoudre le déséquilibre des données

Les données en amont ne sont pas brassées avant d'être écrites dans une table extensible par ajout. Si la distribution des données en amont est déséquilibrée, certains workers de sink reçoivent beaucoup plus de données que d'autres, laissant certaines ressources sous-utilisées et créant un goulot d'étranglement d'écriture.

Définissez sink.parallelism sur une valeur différente du parallélisme du nœud en amont. Cela force un brassage entre l'opérateur en amont et le sink. Pour confirmer que le brassage est actif, consultez la console de développement Realtime Compute for Apache Flink : si l'opérateur sink et son nœud en amont apparaissent dans différentes sous-tâches, les données sont bien brassées.

Limiter la taille des fichiers temporaires locaux

Définissez write-buffer-spill.max-disk-size dans les SQL Hints pour plafonner l'espace disque utilisé par les tampons d'écriture déversés.

Optimiser les performances de lecture

Ajuster le parallélisme de la source

Utilisez les SQL Hints pour définir le paramètre scan.parallelism de la source Paimon.

Trier les données pour améliorer l'efficacité des requêtes

L'ordre des données affecte considérablement les performances du traitement par lots et des requêtes ad hoc OLAP. Le tri des données selon les colonnes les plus couramment utilisées dans les conditions de filtre réduit la quantité de données que chaque requête doit analyser.

Le tri nécessite l'exécution d'une tâche Flink en mode batch. Avant de commencer, effectuez la configuration requise décrite dans la rubrique Data management configuration. Configurez ensuite les paramètres de la tâche dans le champ Entry Point Main Arguments.

Quand utiliser chaque stratégie de tri :

Stratégie À utiliser lorsque
zorder Requêtes de plage avec moins de cinq colonnes de filtre
hilbert Requêtes de plage avec cinq colonnes de filtre ou plus
order Requêtes utilisant uniquement des conditions d'égalité

L'exemple suivant trie les données dans des partitions spécifiques par les colonnes date et type à l'aide de Z-order :

compact
--warehouse 'oss://your-bucket/data-warehouse'
--database 'your_database'
--table 'your_table'
--order_strategy 'zorder'
--order_by 'date,type'
--partition 'dt=20240311,hh=08;dt=20240312,hh=09'
--catalog_conf 'fs.oss.endpoint=oss-cn-hangzhou-internal.aliyuncs.com'
--catalog_conf 'fs.oss.endpoint=oss-cn-beijing-internal.aliyuncs.com'
--table_conf 'write-buffer-size=256 MB'
--table_conf 'your_table.logRetentionDuration=7 days'
Paramètre Description
warehouse Le chemin OSS du data warehouse contenant le catalogue de la table Paimon.
database Le nom de la base de données contenant la table Paimon.
table Le nom de la table Paimon.
order_strategy La stratégie de tri. Valeurs valides : zorder, hilbert, order. Consultez le tableau de sélection des stratégies ci-dessus.
order_by Les colonnes selon lesquelles trier, séparées par des virgules.
partition Les partitions à trier, séparées par des points-virgules. Omettez ce paramètre si la table n'est pas partitionnée.
catalog_conf Paramètres de la clause WITH du catalogue contenant la table Paimon. Spécifiez un paramètre par ligne.
table_conf Configuration temporaire de la table, équivalente aux SQL Hints. Spécifiez un paramètre par ligne.