TPC-H : ce que mesure le benchmark et comment le lancer
8 min de lecture
TPC-H est le benchmark d’aide à la décision du Transaction Processing Performance Council (TPC) : 22 requêtes métier et deux fonctions de rafraîchissement s’exécutent sur huit tables que le programme dbgen du TPC remplit selon un facteur d’échelle choisi, le facteur 1 correspondant à environ 1 Go. Sa métrique, QphH@Size, combine un test de puissance à un seul flux et un test de débit à plusieurs flux, et les résultats officiels ajoutent un prix par kQphH@Size. Seuls les résultats audités publiés sur tpc.org sont officiels ; tout chiffre de type TPC-H publié hors de tpc.org compte comme une charge dérivée selon les règles d’usage loyal du TPC et ne doit pas être comparé aux résultats officiels.
Nous n’avons pas exécuté le benchmark pour ce guide. Les faits proviennent de tpc.org, de la spécification en révision 3.0.1, que tpc.org désigne comme actuelle, et de la documentation de chaque outil, le tout vérifié le 1er novembre 2026. Les appréciations sont les nôtres.
| TPC-H | TPC-C | TPC-DS | |
|---|---|---|---|
| Charge | Aide à la décision : requêtes ad hoc plus mises à jour des données | OLTP : les commandes d’un grossiste | Aide à la décision : requêtes plus maintenance des données |
| Périmètre | 8 tables, 22 requêtes, 2 fonctions de rafraîchissement | 9 types de tables, 5 types de transactions | Schéma en flocon, 7 tables de faits, 99 requêtes |
| Métrique principale | QphH@Size et $/kQphH@Size | tpmC | QphDS@SF et $/kQphDS@SF |
| Version actuelle | 3.0.1 | 5.11.0 | 4.0.0 |
Que mesure TPC-H ?
La vitesse à laquelle un système répond à des requêtes analytiques complexes sur un gros volume de données, pendant que de nouvelles ventes arrivent et que d’anciennes sont supprimées. Une seule spécification définit le schéma, les requêtes, les données et les règles.
La page TPC-H décrit une suite de requêtes ad hoc orientées métier accompagnées de modifications de données simultanées (vérifié le 1er novembre 2026). La spécification définit huit tables : PART, PARTSUPP, LINEITEM, ORDERS, CUSTOMER, SUPPLIER, NATION et REGION. Toutes sauf les deux dernières grandissent avec le facteur d’échelle ; LINEITEM, la plus grande, compte environ 6 000 000 de lignes par unité. La fonction de rafraîchissement RF1 insère de nouvelles lignes dans ORDERS et LINEITEM, et RF2 supprime d’anciennes ventes (vérifié le 1er novembre 2026).
Comment le score TPC-H est-il calculé ?
Une exécution enchaîne un test de puissance puis un test de débit, et QphH@Size est la moyenne géométrique des deux résultats. La métrique de prix est le prix total du système divisé par QphH@Size, multiplié par 1 000.
Dans le test de puissance, un flux de rafraîchissement exécute RF1, une session de requêtes unique exécute les 22 requêtes une fois, puis le flux de rafraîchissement exécute RF2. Power@Size vaut 3 600 fois le facteur d’échelle, divisé par la moyenne géométrique de ces 24 durées. Dans le test de débit, plusieurs flux de requêtes tournent à côté d’un flux de rafraîchissement : au moins 2 au facteur 1, jusqu’à 11 au facteur 100 000. Throughput@Size correspond aux requêtes par heure sur l’ensemble des flux, multipliées par le facteur d’échelle. Un test complet comporte deux exécutions, et le sponsor publie celle dont le QphH est le plus bas (le tout d’après la spécification, vérifié le 1er novembre 2026).
La moyenne géométrique donne le même poids à chaque requête : diviser par deux la durée d’une seule requête n’augmente Power que d’environ 3 %. Un résultat officiel utilise un facteur d’échelle pris dans une liste fixe : 1, 10, 30, 100 et ainsi de suite jusqu’à 100 000.
Qui publie les résultats TPC-H, et lesquels comptent ?
Les éditeurs qui parrainent un test publient des résultats audités sur tpc.org, et seuls ceux-là sont officiels. Toute autre exécution est une charge dérivée, soumise à ses propres règles.
La spécification impose un audit indépendant par un auditeur certifié par le TPC. Le guide rapide sur l’usage loyal (fair use) du TPC n’autorise le nom du TPC à côté de résultats que pour les résultats officiels publiés. Tout le reste doit porter le préfixe « Derived from », ne peut pas utiliser la métrique du TPC, doit afficher un avertissement indiquant qu’il n’est pas comparable aux résultats publiés, devrait décrire son environnement et ses écarts, et ne peut pas être comparé aux résultats officiels (vérifié le 1er novembre 2026).
Comment lancer TPC-H vous-même ?
Générez les données et le texte des requêtes, chargez les tables, puis lancez le test de puissance suivi du test de débit. Vous pouvez utiliser les outils du TPC, un kit conçu pour une base de données précise ou un moteur doté d’un générateur intégré.
La page des spécifications actuelles du TPC propose un paquet d’outils gratuit : vous vous inscrivez, acceptez une licence et recevez le lien par e-mail. Selon la spécification, DBGen doit produire les données et QGen le texte des requêtes (vérifié le 1er novembre 2026).
Pour PostgreSQL, la page TPC-H du wiki ne donne pas de procédure pas à pas et renvoie vers DBT-3, un kit complet que la page DBT-3 du wiki présente comme une implémentation de la spécification conforme à l’usage loyal. HammerDB fournit TPROC-H, que sa documentation décrit comme une charge open source dérivée de TPC-H et non comparable aux résultats publiés. Il fonctionne sur PostgreSQL, MySQL, Oracle et d’autres moteurs, et la documentation recommande de comparer la moyenne géométrique des durées de requêtes plutôt que de calculer un QphH (le tout vérifié le 1er novembre 2026).
DuckDB dispose d’une extension tpch qui, d’après sa documentation, implémente le générateur de données et les requêtes. Ces lignes génèrent le facteur 1, exécutent la requête 4 et listent les 22 requêtes :
CALL dbgen(sf = 1);
PRAGMA tpch(4);
FROM tpch_queries();
La même page prévient que les données diffèrent légèrement de la spécification, que chaque requête s’exécute avec des paramètres fixes et que dbgen ne supprime pas les tables existantes. Pour des données entièrement conformes, elle renvoie vers tpchgen-cli (vérifié le 1er novembre 2026).
Comment lire honnêtement des résultats TPC-H ?
Ne comparez des résultats qu’au même facteur d’échelle et dans la même version du benchmark, et lisez chaque métrique avec son suffixe de taille. Un graphique de durées de requêtes isolées ne montre ni le test de puissance ni le test de débit.
La page des résultats regroupe les résultats par taille de base et porte trois mentions : les résultats des versions 2 et 3 ne sont pas comparables, le rapport prix/performance dans des devises différentes ne doit pas être comparé, et les comparaisons entre tailles de base sont trompeuses (vérifié le 1er novembre 2026). La spécification ajoute que des résultats avec des nombres de flux différents sont comparables à taille de base égale.
Pour une exécution informelle, cherchez ce que demandent les règles d’usage loyal : matériel et mémoire, modifications du schéma ou du texte des requêtes, et présence ou non des fonctions de rafraîchissement. Un article qui chronomètre les 22 requêtes une seule fois, cache chaud, sans flux de rafraîchissement, ne couvre que le volet requêtes d’un test de puissance, même si une telle exécution reste utile pour suivre vos propres régressions. Sur le lien entre cadence de requêtes et temps de réponse, voir débit vs latence.
Quand utiliser autre chose que TPC-H ?
Quand la charge est transactionnelle, quand vous voulez un benchmark analytique plus récent, ou quand la question porte sur ce que vivent les utilisateurs. Le benchmark modélise une charge analytique, sans transactions courtes ni couche applicative.
Choisissez TPC-DS pour un test d’aide à la décision plus large : sa spécification en version 4.0.0 utilise un schéma en flocon avec sept tables de faits et 99 requêtes, et sa page de présentation indique que les résultats de la version 4 ne sont pas comparables aux versions précédentes. Choisissez TPC-C, ou le TPROC-C de HammerDB, pour de l’OLTP de type saisie de commandes : la page TPC-C décrit cinq types de transactions mesurés en tpmC (le tout vérifié le 1er novembre 2026). Pour un contrôle rapide d’une seule base, pgbench couvre PostgreSQL et sysbench couvre MySQL.
LoadFocus, qui publie ce site, n’exécute pas TPC-H ; ses tests visent des endpoints web et API. LoadFocus exécute des plans de test JMeter et des scripts k6 depuis 25 régions cloud, sans pilote JDBC ni module SQL, et ne peut donc pas se connecter à la base de données. Pour ce travail, choisissez un outil de benchmark de base de données comme l’extension de DuckDB, DBT-3 ou HammerDB plutôt que LoadFocus, et utilisez LoadFocus pour la couche web ou API placée devant la base, en partant de son modèle pour les endpoints derrière les requêtes lourdes.
FAQ
Quelle est la différence entre TPC-H et TPC-DS ? Ce sont deux benchmarks d’aide à la décision du TPC. TPC-H utilise 8 tables et 22 requêtes et publie QphH@Size, tandis que TPC-DS utilise un schéma en flocon avec sept tables de faits et 99 requêtes et publie QphDS@SF.
Que signifie QphH@Size dans TPC-H ? C’est la métrique composite de requêtes par heure : la moyenne géométrique des résultats du test de puissance et du test de débit pour une taille de base donnée. Le suffixe indique cette taille, par exemple QphH@1000GB, et des résultats obtenus à des tailles différentes ne doivent pas être comparés.
LoadFocus peut-il exécuter TPC-H ? Non. LoadFocus exécute des plans de test JMeter et des scripts k6 visant des endpoints web et API et n’a pas de connexion SQL : utilisez un outil de benchmark de base de données pour TPC-H et LoadFocus pour la couche applicative placée devant la base.
À lire aussi
- pgbench : benchmark et test de charge de PostgreSQL
- Utiliser sysbench : benchmarks CPU, disque et MySQL
- YCSB : charges de travail A-F, exécution et limites
- redis-benchmark : l’utiliser et lire ses résultats
- Débit vs latence : comment ils interagissent sous charge
Les affirmations techniques de cet article n'ont pas été relues de façon indépendante.