Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

TPC-H (1999)

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.

Références

Génération et import des données

Commencez par cloner le dépôt TPC-H et compiler le générateur de données :

git clone https://github.com/gregrahn/tpch-kit.git
cd tpch-kit/dbgen
make

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 &
done
wait

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.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO region FORMAT CSV" < region.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO part FORMAT CSV" < part.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO supplier FORMAT CSV" < supplier.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO partsupp FORMAT CSV" < partsupp.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO orders FORMAT CSV" < orders.tbl
clickhouse-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.

Navigation