Tous les produits
Search
Centre de documentation

E-MapReduce:Exécuter un test de performance TPC-H

Dernière mise à jour :Aug 26, 2026

Utilisez le benchmark TPC-H pour tester les performances des scénarios de requête de traitement analytique en ligne (OLAP).

TPC-H

La description suivante est extraite de TPC Benchmark H (TPC-H) :

« Le TPC-H est un benchmark d'aide à la décision. Il comprend une suite de requêtes ad hoc orientées métier et de modifications de données concurrentes. Les requêtes et les données alimentant la base de données ont été choisies pour leur pertinence générale au sein de l'industrie. Ce benchmark illustre les systèmes d'aide à la décision qui examinent de grands volumes de données, exécutent des requêtes d'une grande complexité et apportent des réponses à des questions commerciales cruciales. »

Pour plus de détails, consultez la spécification TPCH.

Remarque

Cette implémentation du TPC-H est basée sur le benchmark TPC-H, mais n'est pas entièrement conforme à ses exigences officielles. Par conséquent, ces résultats ne sont pas comparables aux résultats officiels publiés du benchmark TPC-H.

Jeu de données

Le benchmark TPC-H a été développé par le Transaction Processing Performance Council (TPC) afin de simuler des applications d'aide à la décision. Il est largement utilisé dans le milieu universitaire et l'industrie pour évaluer les performances des technologies d'aide à la décision.

Le TPC-H modélise un entrepôt de données pour un système de vente basé sur un environnement de production réel. Il contient huit tables et le volume de données peut varier de 1 Go à 3 To. Le benchmark inclut 22 requêtes et la métrique principale est le temps de réponse de chaque requête, mesuré depuis sa soumission jusqu'au retour des résultats. Les résultats des tests offrent une vue d'ensemble complète de la capacité de traitement des requêtes du système. Pour plus d'informations, consultez le benchmark TPC-H.

Procédure

Ce test utilise les 22 requêtes du benchmark TPC-H. Les résultats du test dépendent directement du volume de données. Le générateur de données TPC-H utilise un facteur d'échelle (SF) pour contrôler le volume de données généré, où 1 SF correspond à 1 Go de données.

Remarque

Le volume de données spécifié couvre uniquement les données brutes et n'inclut pas l'espace d'indexation. Prévoyez un stockage supplémentaire lors de la préparation de l'environnement.

  1. Préparez l'environnement.

    Préparez les ressources requises pour le scénario de requête OLAP.

    Remarque

    Pour obtenir des résultats cohérents, utilisez une nouvelle instance pour chaque test. Évitez d'utiliser des instances dont la configuration a été augmentée ou réduite (scale up/down).

    1. Créez une instance ECS. Pour plus d'informations, consultez Créer une instance ECS.

      L'instance ECS utilisée pour ce test est configurée comme suit :

      • Type d'instance : ecs.g6e.4xlarge

      • Système d'exploitation : CentOS 7.9

      • Disque de données : SSD entreprise (ESSD). La capacité du disque dépend du volume de données de test.

    2. Créez une instance StarRocks. Pour plus d'informations, consultez Créer une instance.

      Pour ce test, le backend (BE) est configuré avec 8 unités de calcul (CU), fournissant 8 cœurs CPU et 32 Go de mémoire. Sélectionnez une configuration adaptée à vos besoins métier.

      Remarque

      Créez l'instance StarRocks et l'instance ECS dans la même région et le même Virtual Private Cloud (VPC).

  2. Configurez les paramètres de la boîte à outils.

    1. Connectez-vous à l'instance ECS. Pour plus d'informations, consultez Se connecter à une instance ECS.

    2. Exécutez les commandes suivantes pour télécharger et décompresser la boîte à outils starrocks-benchmark.

      wget https://emr-olap.oss-cn-beijing.aliyuncs.com/packages/starrocks-benchmark-for-serverless.tar.gz
      tar xzvf starrocks-benchmark-for-serverless.tar.gz
    3. Accédez au répertoire starrocks-benchmark-for-serverless.

      cd starrocks-benchmark-for-serverless
    4. Exécutez la commande vim group_vars/all pour configurer les paramètres du test de benchmark.

      # mysql client config
      login_host: fe-c-8764bab92bc6****-internal.starrocks.aliyuncs.com
      login_port: 9030
      login_user: admin
      login_password: xxxx
      # oss config
      bucket: ""
      endpoint: ""
      access_key_id: ""
      access_key_secret: ""
      # benchmark config
      scale_factor: 1
      work_dir_root: /mnt/disk1/starrocks-benchmark/workdirs
      dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasets

      Le tableau suivant décrit les paramètres.

      Paramètre

      Description

      Notes

      login_host

      L'endpoint interne du frontend (FE) de l'instance StarRocks.

      Dans l'onglet Instance Details de votre instance StarRocks, recherchez l'endpoint dans la section FE Details sous Internal Endpoint.

      Important

      Évitez d'utiliser un endpoint public.

      Paramètres de connexion du client StarRocks.

      login_port

      Le port de requête du FE de l'instance StarRocks. La valeur par défaut est 9030.

      Dans l'onglet Instance Details de votre instance StarRocks, recherchez le port dans la section FE Details sous Query Port.

      login_user

      L'utilisateur initial de l'instance StarRocks.

      login_password

      Le mot de passe de l'utilisateur initial de l'instance StarRocks.

      bucket

      Le nom du bucket OSS.

      Facultatif. Configuration OSS. Si vous configurez ces paramètres, la boîte à outils génère et stocke le jeu de données de test dans OSS.

      endpoint

      L'endpoint pour accéder à OSS.

      access_key_id

      L'AccessKey ID de votre compte Alibaba Cloud.

      access_key_secret

      L'AccessKey Secret de votre compte Alibaba Cloud.

      scale_factor

      Le facteur d'échelle du jeu de données, qui contrôle le volume de données. La valeur par défaut est 1. L'unité est le Go.

      Configuration du benchmark.

      work_dir_root

      Le répertoire de travail racine. Il stocke les instructions SQL de création de table TPC-H, les instructions SQL exécutées et d'autres artefacts. La valeur par défaut est /mnt/disk1/starrocks-benchmark/workdirs.

      dataset_generate_root_path

      Le chemin de stockage du jeu de données de test généré. La valeur par défaut est /mnt/disk1/starrocks-benchmark/datasets.

      Si vous configurez OSS, le bucket spécifié est monté sur ce chemin.

  3. Exécutez la commande suivante pour effectuer un test TPC-H automatisé de bout en bout.

    bin/run_tpch.sh

    Cette commande automatise l'intégralité du processus de test TPC-H : création de la base de données et des tables, génération et chargement du jeu de données, ainsi qu'exécution des 22 requêtes SQL.

    Autres opérations :

    • Pour charger uniquement le jeu de données, exécutez la commande suivante.

      bin/run_tpch.sh reload
    • Pour exécuter uniquement le test de requête TPC-H, exécutez la commande suivante.

      bin/run_tpch.sh query
  4. Consultez les résultats.

    • Résumé des résultats du test

      Lorsque la commande bin/run_tpch.sh se termine, elle affiche les résultats du test, qui ressemblent à ce qui suit :

      TASK [tpc_h : debug] ****************************************************************************************************************************************
      ok: [10.1.**.**] => {
          "command_output.stdout_lines": [
              "[info] 2022-03-01 09:51:23.295 | Run sql queries started.",
              "[info] 2022-03-01 09:51:23.330 | Run q10.sql started.",
              "[info] 2022-03-01 09:51:23.913 | Run q10.sql finished. Time taken: 0:00:00, .557 seconds",
              "[info] 2022-03-01 09:51:23.923 | Run q11.sql started.",
              "[info] 2022-03-01 09:51:24.026 | Run q11.sql finished. Time taken: 0:00:00, .100 seconds",
              "[info] 2022-03-01 09:51:24.038 | Run q12.sql started.",
              "[info] 2022-03-01 09:51:24.192 | Run q12.sql finished. Time taken: 0:00:00, .151 seconds",
              "[info] 2022-03-01 09:51:24.204 | Run q13.sql started.",
              "[info] 2022-03-01 09:51:24.553 | Run q13.sql finished. Time taken: 0:00:00, .347 seconds",
              "[info] 2022-03-01 09:51:24.563 | Run q14.sql started.",
              "[info] 2022-03-01 09:51:24.665 | Run q14.sql finished. Time taken: 0:00:00, .098 seconds",
              "[info] 2022-03-01 09:51:24.675 | Run q15.sql started.",
              "[info] 2022-03-01 09:51:24.852 | Run q15.sql finished. Time taken: 0:00:00, .175 seconds",
              "[info] 2022-03-01 09:51:24.864 | Run q16.sql started.",
              "[info] 2022-03-01 09:51:25.008 | Run q16.sql finished. Time taken: 0:00:00, .142 seconds",
              "[info] 2022-03-01 09:51:25.018 | Run q17.sql started.",
              "[info] 2022-03-01 09:51:25.269 | Run q17.sql finished. Time taken: 0:00:00, .248 seconds",
              "[info] 2022-03-01 09:51:25.280 | Run q18.sql started.",
              "[info] 2022-03-01 09:51:25.800 | Run q18.sql finished. Time taken: 0:00:00, .518 seconds",
              "[info] 2022-03-01 09:51:25.810 | Run q19.sql started.",
              "[info] 2022-03-01 09:51:25.943 | Run q19.sql finished. Time taken: 0:00:00, .130 seconds",
              "[info] 2022-03-01 09:51:25.953 | Run q1.sql started.",
              "[info] 2022-03-01 09:51:26.295 | Run q1.sql finished. Time taken: 0:00:00, .339 seconds",
              "[info] 2022-03-01 09:51:26.305 | Run q20.sql started.",
              "[info] 2022-03-01 09:51:26.708 | Run q20.sql finished. Time taken: 0:00:00, .400 seconds",
              "[info] 2022-03-01 09:51:26.720 | Run q21.sql started.",
              "[info] 2022-03-01 09:51:27.323 | Run q21.sql finished. Time taken: 0:00:00, .600 seconds",
              "[info] 2022-03-01 09:51:27.334 | Run q22.sql started.",
              "[info] 2022-03-01 09:51:27.403 | Run q22.sql finished. Time taken: 0:00:00, .065 seconds",
              "[info] 2022-03-01 09:51:27.415 | Run q2.sql started.",
              "[info] 2022-03-01 09:51:27.632 | Run q2.sql finished. Time taken: 0:00:00, .213 seconds",
              "[info] 2022-03-01 09:51:27.648 | Run q3.sql started.",
              "[info] 2022-03-01 09:51:27.917 | Run q3.sql finished. Time taken: 0:00:00, .262 seconds",
              "[info] 2022-03-01 09:51:27.936 | Run q4.sql started.",
              "[info] 2022-03-01 09:51:28.150 | Run q4.sql finished. Time taken: 0:00:00, .210 seconds",
              "[info] 2022-03-01 09:51:28.172 | Run q5.sql started.",
              "[info] 2022-03-01 09:51:28.954 | Run q5.sql finished. Time taken: 0:00:00, .778 seconds",
              "[info] 2022-03-01 09:51:28.976 | Run q6.sql started.",
              "[info] 2022-03-01 09:51:29.080 | Run q6.sql finished. Time taken: 0:00:00, .103 seconds",
              "[info] 2022-03-01 09:51:29.096 | Run q7.sql started.",
              "[info] 2022-03-01 09:51:29.445 | Run q7.sql finished. Time taken: 0:00:00, .346 seconds",
              "[info] 2022-03-01 09:51:29.460 | Run q8.sql started.",
              "[info] 2022-03-01 09:51:32.692 | Run q8.sql finished. Time taken: 0:00:03, 3.229 seconds",
              "[info] 2022-03-01 09:51:32.703 | Run q9.sql started.",
              "[info] 2022-03-01 09:51:33.318 | Run q9.sql finished. Time taken: 0:00:00, .611 seconds",
              "[info] 2022-03-01 09:51:33.324 | Run sql queries finished. Time taken: 0:00:10, 10.026 seconds"
          ]
      }
      TASK [tpc_h : debug] ********************************************************************************************************************************************************************************
      ok: [10.1.0.91] => {
          "work_dir": "/mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1"
      }
    • Résultats détaillés du test

      Une fois la commande bin/run_tpch.sh terminée, le système crée le répertoire de travail pour le test TPC-H et affiche le chemin <work_dir>. Accédez à ce répertoire pour consulter les instructions de requête, les instructions de création de table et les journaux d'exécution.

      TASK [tpc_h : debug] ****************************************************
      ok: [10.1.0.91] => {
          "work_dir": /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1
      }
      Remarque

      Dans cet exemple, <work_dir> est /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1.

      Exécutez la commande cd <work_dir>/logs pour accéder au sous-répertoire des journaux et consulter les résultats du test ainsi que la sortie SQL détaillée.

      Le répertoire <work_dir> présente la structure suivante :

      <work_dir>/
      ├── config # Configurations for the run.sh and run_mysql.sh scripts.
      ├── logs # Logs from the most recent TPC-H run.
      │   ├── *.sql.err
      │   ├── *.sql.out
      │   └── run.log
      ├── queries # The 22 TPC-H SQL queries.
      │   ├── ddl
      │   │   └── create_tables.sql # TPC-H table creation SQL.
      │   └── *.sql
      ├── run_mysql.sh
      ├── run.sh # Runs all TPC-H queries.
      └── tpch_tools # The dbgen toolkit.