Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

TPC-H (1999)

卸売業者の内部データウェアハウスをモデル化した、代表的なベンチマークです。データは第3正規形で格納されているため、クエリ実行時には多数のJOINが必要になります。古典的なベンチマークではあるものの、データが一様かつ独立に分布しているという非現実的な前提にもかかわらず、TPC-Hは現在でも最も広く使われているOLAPベンチマークです。

参考文献

データの生成とインポート

まず、TPC-H のリポジトリをチェックアウトし、データ生成ツールをコンパイルします。

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

次に、データを生成します。パラメーター -s でスケール係数を指定します。たとえば、-s 100 を指定すると、テーブル 'lineitem' に6億行が生成されます。

./dbgen -s 100

処理を高速化するには、"chunked" 生成を利用できます (複数プロセスで実行) :

for i in $(seq 1 8); do
    ./dbgen -s 100 -C 8 -S $i &
done
wait

スケール係数 100 での各テーブルの詳細なサイズ:

Table size (in rows) size (compressed in 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

(ClickHouse での圧縮サイズは system.tables.total_bytes から取得したもので、以下のテーブル定義に基づいています。)

次に、ClickHouse でテーブルを作成します。テーブル定義は、ClickHouse リポジトリ内の init.sql にあります。

データは次のようにインポートできます。

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

クエリ

22 個の TPC-H クエリは、ClickHouse リポジトリのこちらにあります。

SQL 標準互換の動作と期待される結果を得るには、settings.json の設定を適用してください。既知の問題や特定のクエリに関する注意事項については、README を参照してください。

正確性

特に明記がない限り、クエリの結果は公式の結果と一致します。確認するには、スケール係数 = 1 の TPC-H データベース (dbgen、上記参照) を生成し、tpch-kit の期待される結果と比較してください。

パフォーマンスベンチマーク

ClickHouse は、リリースされたすべてのバージョンの TPC-H クエリパフォーマンスを追跡しています。ClickHouse versions benchmark ページでは、全 22 種類の TPC-H クエリ (スケール係数 40) の実行時間を確認し、パフォーマンスが時とともにどのように変化してきたかを確認できます。

Navigation