도매 공급업체의 내부 데이터 웨어하우스를 모델링한 대표적인 벤치마크입니다. 데이터는 제3정규형으로 저장되므로, 쿼리 실행 시 많은 조인이 필요합니다. 오래된 벤치마크이고 데이터가 균등하고 독립적으로 분포된다는 비현실적인 가정을 전제로 하지만, TPC-H는 현재까지도 가장 널리 사용되는 OLAP 벤치마크입니다.
그런 다음 데이터를 생성합니다. 매개변수 -s는 스케일 팩터를 지정합니다. 예를 들어 -s 100을 사용하면 테이블 'lineitem'에 6억 개의 행이 생성됩니다.
./dbgen -s 100
속도를 높이기 위해 여러 프로세스를 사용하는 "청크" 생성을 사용할 수 있습니다:
for i in $(seq 1 8); do ./dbgen -s 100 -C 8 -S $i &donewait
스케일 팩터 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.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