Cette rubrique détaille la conception, la procédure et les résultats d'un test de benchmark TPC-H portant sur l'index columnar clusterisé (CCI) de PolarDB-X.
Contexte
TPC-H est un benchmark d'aide à la décision établi par le Transaction Processing Performance Council (TPC) pour évaluer les capacités de requête analytique des bases de données. La charge de travail TPC-H comprend huit tables et 22 requêtes SQL complexes, impliquant principalement des jointures de tables, des sous-requêtes et des agrégations GROUP BY.
L'implémentation TPC-H décrite dans cette rubrique s'appuie sur le benchmark officiel TPC-H. Toutefois, ce test ne satisfait pas à toutes les exigences officielles et ses résultats ne sont pas comparables aux résultats de benchmark TPC-H publiés.
Conception du test
Taille du jeu de données
Ce test utilise un jeu de données de 100 Go (Scale Factor = 100). Les principales tables sont :
LINEITEM : environ 600 millions de lignes
ORDERS : 150 millions de lignes
PART_SUPP : 80 millions de lignes
Spécifications des instances de test
|
Spécification du nœud |
Nombre de nœuds |
Taille du jeu de données |
|
8c32g |
2/4 |
100 Go |
|
16c64g |
2/3/4/6 |
100 Go |
Spécification de l'instance de test de charge
ecs.g7.4xlarge (16 vCPU, 64 Go de mémoire)
Procédure
Étape 1 : Préparer l'instance ECS de test de charge
Préparez une instance ECS. Vous utiliserez cette instance pour toutes les opérations ultérieures, telles que l'importation des données et l'exécution du test de charge.
Déployez l'instance ECS dans un VPC. Notez le nom et l'ID du VPC, car toutes les instances suivantes doivent être déployées dans ce même VPC.
Nous vous recommandons d'utiliser le système d'exploitation CentOS pour l'instance ECS et de lui attribuer une adresse IP publique.
Étape 2 : Préparer l'instance PolarDB-X****
Créez une instance PolarDB-X. Pour plus d'informations, consultez Créer une instance.
Assurez-vous que l'instance PolarDB-X et l'instance ECS de test de charge se trouvent dans le même VPC.
Ajoutez l'adresse IP interne de l'instance ECS de test de charge à la liste d'autorisation de l'instance PolarDB-X.
Étape 3 : Ajuster les paramètres de l'instance
Pour obtenir des performances optimales lors du test de charge, ajustez les paramètres des nœuds de calcul PolarDB-X.
Définissez le paramètre XPROTO_MAX_DN_CONCURRENT sur 4000. Pour plus d'informations, consultez Paramétrage.
-
Connectez-vous à l'instance PolarDB-X via une interface de ligne de commande (CLI). Dans la même session, exécutez les instructions SQL suivantes pour désactiver la journalisation SQL, l'échantillonnage CPU et la collecte automatique de statistiques.
set global RECORD_SQL = false; set global MPP_METRIC_LEVEL = 0; set global ENABLE_CPU_PROFILE = false; set global ENABLE_BACKGROUND_STATISTIC_COLLECTION=false; set global ENABLE_STATISTIC_FEEDBACK=false;
Étape 4 : Installer l'outil Benchmark Boot
Ouvrez le port 4121 dans le groupe de sécurité de l'instance ECS de test de charge. Pour plus d'informations, consultez Ajouter une règle de groupe de sécurité.
Connectez-vous à l'instance ECS de test de charge et exécutez la commande
bash -c "$(curl -fsSL https://benchmark-boot.oss-cn-hangzhou.aliyuncs.com/setup.sh)"pour installer Benchmark Boot. Pour plus d'informations, consultez Télécharger et installer Benchmark Boot.Dans votre navigateur, ouvrez http://{adresse IP publique de l'instance de test de charge}:4121. La page d'accueil de Benchmark Boot s'affiche, confirmant la réussite de l'installation.
Étape 5 : Préparer les données
Dans la console Benchmark Boot, accédez à Stress Test > Database Connection > Configure Database Connection. Configurez la chaîne de connexion PolarDB-X (adresse IP de l'hôte, port, nom d'utilisateur et mot de passe). Saisissez le nom de la base de données TPC-H, sélectionnez AUTO pour Database Creation Mode, puis cliquez sur Submit.
-
Accédez à Stress Test > TPCH > Import TPC-H. Définissez Submit sur 100 et Submit sur 16. Cliquez sur Submit pour importer le jeu de données TPC-H de 100 Go vers l'instance principale PolarDB-X.
RemarqueUne fois les données importées, Benchmark Boot exécute automatiquement l'instruction
ANALYZE TABLEpour collecter les statistiques. -
Après l'importation du jeu de données TPC-H de 100 Go, exécutez les instructions SQL suivantes sur l'instance principale PolarDB-X pour créer des index columnar clusterisés (CCI). Pour plus d'informations, consultez Créer et utiliser des CCI.
create clustered columnar index `nation_col_index` on nation(`n_nationkey`) partition by hash(`n_nationkey`) partitions 1; create clustered columnar index `region_col_index` on region(`r_regionkey`) partition by hash(`r_regionkey`) partitions 1; create clustered columnar index `customer_col_index` on customer(`c_custkey`) partition by hash(`c_custkey`) partitions 64; create clustered columnar index `part_col_index` on part(`p_size`) partition by hash(`p_partkey`) partitions 64; create clustered columnar index `partsupp_col_index` on partsupp(`ps_partkey`) partition by hash(`ps_partkey`) partitions 64; create clustered columnar index `supplier_col_index` on supplier(`s_suppkey`) partition by hash(`s_suppkey`) partitions 64; create clustered columnar index `orders_col_index` on orders(`o_orderdate`,`o_orderkey`) partition by hash(`o_orderkey`) partitions 64; create clustered columnar index `lineitem_col_index` on lineitem(`l_shipdate`,`l_orderkey`) partition by hash(`l_orderkey`) partitions 64;RemarqueExécutez l'instruction
SHOW COLUMNAR INDEXpour consulter l'état actuel des CCI. Pour plus d'informations, consultez SHOW COLUMNAR INDEX.La création des CCI prend environ 45 minutes.
Étape 6 : Ajouter une instance de stockage en colonnes en lecture seule
Ajoutez une instance de stockage en colonnes en lecture seule à l'instance principale PolarDB-X. Pour plus d'informations, consultez Ajouter une instance de stockage en colonnes en lecture seule.
Ajoutez l'adresse IP interne de l'instance ECS de test de charge à la liste d'autorisation de l'instance de stockage en colonnes en lecture seule PolarDB-X.
Étape 7 : Exécuter le test TPC-H
Dans la console Benchmark Boot, accédez à . Configurez la chaîne de connexion pour l'instance de stockage en colonnes en lecture seule, saisissez le nom de la base de données TPC-H, sélectionnez AUTO pour Database Creation Mode, puis cliquez sur Submit.
Accédez à Stress Test > TPCH > Run TPCH. Sélectionnez Submit, saisissez une description de tâche, puis cliquez sur Submit pour exécuter les 22 requêtes du benchmark TPC-H.
-
Accédez à pour consulter les résultats finaux du test.
RemarqueLa première exécution du benchmark nécessite une phase de chauffe. Pour obtenir des résultats stables, nous vous recommandons d'exécuter le test plusieurs fois.
Résultats du test
Tous les temps d'exécution sont exprimés en secondes (s).
|
Requête |
8c32g * 2 |
8c32g * 4 |
16c64g * 2 |
16c64g * 3 |
16c64g * 4 |
16c64g * 6 |
|
Q1 |
5,9 |
3,99 |
4,37 |
1,6 |
1,22 |
0,86 |
|
Q2 |
2,41 |
1,68 |
1,63 |
1,15 |
1,04 |
0,86 |
|
Q3 |
4,18 |
2,13 |
2,43 |
1,77 |
1,20 |
0,88 |
|
Q4 |
3,72 |
1,02 |
0,94 |
0,78 |
0,48 |
0,44 |
|
Q5 |
5,63 |
3,12 |
3,27 |
2,05 |
1,68 |
1,4 |
|
Q6 |
0,41 |
0,38 |
0,42 |
0,18 |
0,15 |
0,13 |
|
Q7 |
5,47 |
2,94 |
2,93 |
2,08 |
1,72 |
1,34 |
|
Q8 |
3,61 |
2,31 |
1,98 |
1,81 |
1,68 |
1,51 |
|
Q9 |
13,6 |
6,91 |
7,46 |
4,93 |
3,85 |
3,11 |
|
Q10 |
6,36 |
3,12 |
3,5 |
2,31 |
1,73 |
1,26 |
|
Q11 |
1,51 |
0,64 |
0,74 |
0,53 |
0,49 |
0,35 |
|
Q12 |
1,86 |
0,82 |
0,78 |
0,57 |
0,40 |
0,35 |
|
Q13 |
8,85 |
4,29 |
4,44 |
2,6 |
1,64 |
1,2 |
|
Q14 |
0,94 |
0,58 |
0,7 |
0,51 |
0,38 |
0,31 |
|
Q15 |
1,26 |
0,76 |
0,88 |
0,59 |
0,47 |
0,37 |
|
Q16 |
2,3 |
1 |
1,19 |
0,75 |
0,61 |
0,46 |
|
Q17 |
1,86 |
0,75 |
0,69 |
0,47 |
0,43 |
0,49 |
|
Q18 |
8,43 |
4,18 |
4,43 |
3,16 |
2,19 |
1,6 |
|
Q19 |
4,92 |
2,16 |
1,86 |
1,07 |
1,02 |
0,73 |
|
Q20 |
1,88 |
1,34 |
1,17 |
0,73 |
0,78 |
0,73 |
|
Q21 |
12,05 |
3,18 |
3,11 |
2,38 |
1,72 |
1,57 |
|
Q22 |
2,67 |
1,25 |
1,39 |
0,98 |
0,66 |
0,61 |
|
Temps total |
99,82 |
48,55 |
50,31 |
33,00 |
25,54 |
20,56 |