Un benchmark populaire qui modélise le data warehouse interne d’un grossiste. Les données sont stockées selon une modélisation en troisième forme normale, ce qui nécessite de nombreuses jointures lors de l’exécution des requêtes. Malgré son ancienneté et l’hypothèse irréaliste selon laquelle les données sont réparties de manière uniforme et indépendante, TPC-H reste à ce jour le benchmark OLAP le plus populaire.
Ensuite, générez les données. Le paramètre -s indique le facteur d’échelle. Par exemple, avec -s 100, 600 millions de lignes sont générées dans la table 'lineitem'.
./dbgen -s 100
Pour aller plus vite, vous pouvez utiliser une génération "par lots" (dans plusieurs processus) :
for i in $(seq 1 8); do ./dbgen -s 100 -C 8 -S $i &donewait
Tailles détaillées des tables pour un facteur d'échelle de 100 :
Table
taille (en lignes)
taille (compressée dans ClickHouse)
nation
25
2 kB
region
5
1 kB
part
20.000.000
895 MB
supplier
1.000.000
75 MB
partsupp
80.000.000
4.37 GB
customer
15.000.000
1.19 GB
orders
150.000.000
6.15 GB
lineitem
600.000.000
26.69 GB
(Les tailles compressées dans ClickHouse proviennent de system.tables.total_bytes et sont basées sur les définitions de table ci-dessous.)
Créez maintenant les tables dans ClickHouse. Les définitions de table sont disponibles dans init.sql dans le dépôt ClickHouse.
Les données peuvent être importées de la manière suivante :
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO nation FORMAT CSV" < nation.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO region FORMAT CSV" < region.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO part FORMAT CSV" < part.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO supplier FORMAT CSV" < supplier.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO partsupp FORMAT CSV" < partsupp.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO orders FORMAT CSV" < orders.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO lineitem FORMAT CSV" < lineitem.tbl
Requêtes
Les 22 requêtes TPC-H sont disponibles ici, dans le dépôt ClickHouse.
Pour obtenir un comportement conforme au standard SQL et les résultats attendus, appliquez les paramètres de settings.json. Consultez le README pour connaître les problèmes connus et les remarques sur certaines requêtes.
Exactitude
Les résultats des requêtes correspondent aux résultats officiels, sauf mention contraire. Pour le vérifier, générez une base de données TPC-H avec un facteur d'échelle de 1 (dbgen, voir ci-dessus), puis comparez-les aux résultats attendus dans tpch-kit.
Benchmark de performances
ClickHouse suit les performances des requêtes TPC-H dans chaque version publiée. Vous pouvez consulter les temps d’exécution des 22 requêtes TPC-H (facteur d’échelle 40) sur la page benchmark des versions de ClickHouse afin de voir comment les performances ont évolué au fil du temps.