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.
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.
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.
-
Préparez l'environnement.
Préparez les ressources requises pour le scénario de requête OLAP.
RemarquePour 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).
-
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.
-
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.
RemarqueCréez l'instance StarRocks et l'instance ECS dans la même région et le même Virtual Private Cloud (VPC).
-
-
Configurez les paramètres de la boîte à outils.
Connectez-vous à l'instance ECS. Pour plus d'informations, consultez Se connecter à une instance ECS.
-
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 -
Accédez au répertoire starrocks-benchmark-for-serverless.
cd starrocks-benchmark-for-serverless -
Exécutez la commande
vim group_vars/allpour 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/datasetsLe 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.
-
Exécutez la commande suivante pour effectuer un test TPC-H automatisé de bout en bout.
bin/run_tpch.shCette 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
-
-
Consultez les résultats.
-
Résumé des résultats du test
Lorsque la commande
bin/run_tpch.shse 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.shterminé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 }RemarqueDans cet exemple, <work_dir> est /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1.
Exécutez la commande
cd <work_dir>/logspour 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.
-