Passer au contenu principal
DataStore dispose de deux modes de compatibilité qui déterminent si la sortie est mise en forme pour être compatible avec pandas ou optimisée pour les performances du Raw SQL.

Vue d’ensemble

Ce que désactive le Mode Performance


Activer le mode Performance

Utilisation de l’objet config

Utilisation des fonctions définies au niveau du module

Utilisation des imports simplifiés

Activer le mode performance définit automatiquement le moteur d’exécution sur chdb. Vous n’avez pas besoin d’appeler config.use_chdb() séparément.

Quand utiliser le mode Performance

Utilisez le mode Performance dans les cas suivants :
  • Vous traitez de grands jeux de données (de centaines de milliers à plusieurs millions de lignes)
  • Vous exécutez des charges de travail riches en agrégations (groupby, sum, mean, count)
  • L’ordre des lignes n’a pas d’importance (par exemple, résultats agrégés, rapports, tableaux de bord)
  • Vous recherchez un débit SQL maximal avec une surcharge minimale
  • L’utilisation de la mémoire est un enjeu (lecture parallèle de Parquet, sans DataFrames intermédiaires)
Restez en mode pandas dans les cas suivants :
  • Vous avez besoin du comportement exact de pandas (ordre des lignes, MultiIndex, dtypes)
  • Vous comptez sur first()/last() pour renvoyer réellement la première ou la dernière ligne
  • Vous utilisez shift(), diff(), cumsum() qui dépendent de l’ordre des lignes
  • Vous écrivez des tests qui comparent la sortie de DataStore à celle de pandas

Différences de comportement

Ordre des lignes

En mode performance, l’ordre des lignes n’est pas garanti, quelle que soit l’opération. Cela inclut :
  • Les résultats de filtrage
  • Les résultats d’agrégation de GroupBy
  • head() / tail() sans sort_values() explicite
  • Les agrégations first() / last()
Si vous avez besoin de résultats triés, ajoutez un sort_values() explicite :

Résultats de GroupBy

Agrégation

Exécution en une seule requête SQL

En mode performance, l’agrégation groupby ColumnExpr (par ex., ds[condition].groupby('col')['val'].sum()) s’exécute sous la forme d’une seule requête SQL, au lieu du processus en deux étapes utilisé en mode pandas :
Cela évite la matérialisation intermédiaire du DataFrame et peut réduire considérablement l’utilisation de la mémoire ainsi que le temps d’exécution.

Comparaison avec le moteur d’exécution

Le mode Performance (compat_mode) et le moteur d’exécution (execution_engine) sont deux axes de configuration indépendants : Définir compat_mode='performance' règle automatiquement execution_engine='chdb', car le mode Performance est conçu pour l’exécution SQL.

Tests avec le mode Performance

Lors de l’écriture de tests avec le mode Performance, les résultats peuvent différer de ceux de pandas quant à l’ordre des lignes et au format structurel. Utilisez les stratégies suivantes :

Tri puis comparaison (agrégations, filtres)

Vérification de l’intervalle de valeurs (première/dernière)

Schéma et comptage (LIMIT sans ORDER BY)


Bonnes pratiques

1. Activez-la au début de votre script

2. Ajoutez un tri explicite lorsque l’ordre est important

3. À utiliser pour les charges de travail de type batch/ETL

4. Passer d’un mode à l’autre au sein d’une session


Dernière modification le 25 juin 2026