Un benchmark popular que modela el almacén de datos interno de un proveedor mayorista. Los datos se almacenan en una representación en tercera forma normal, lo que requiere numerosos joins al ejecutar las consultas. A pesar de su antigüedad y de la poco realista suposición de que los datos se distribuyen de manera uniforme e independiente, TPC-H sigue siendo el benchmark de OLAP más popular hasta la fecha.
A continuación, genere los datos. El parámetro -s especifica el factor de escala. Por ejemplo, con -s 100, se generan 600 millones de filas para la tabla 'lineitem'.
./dbgen -s 100
Para agilizar el proceso, puedes usar la generación por "fragmentos" (en varios procesos):
for i in $(seq 1 8); do ./dbgen -s 100 -C 8 -S $i &donewait
Tamaños detallados de las tablas con un factor de escala de 100:
Tabla
tamaño (en filas)
tamaño (comprimido en 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
(Los tamaños comprimidos en ClickHouse se toman de system.tables.total_bytes y se basan en las definiciones de tabla que aparecen a continuación).
Ahora cree las tablas en ClickHouse. Las definiciones de tabla están disponibles en init.sql en el repositorio de ClickHouse.
Los datos se pueden importar de la siguiente manera:
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
Consultas
Las 22 consultas TPC-H se pueden encontrar aquí, en el repositorio de ClickHouse.
Para obtener un comportamiento compatible con el estándar SQL y los resultados esperados, aplique la configuración definida en settings.json. Consulte el README para conocer los problemas conocidos y las notas sobre consultas específicas.
Corrección
El resultado de las consultas coincide con los resultados oficiales, salvo que se indique lo contrario. Para verificarlo, genere una base de datos TPC-H con un factor de escala = 1 (dbgen, vea más arriba) y compárela con los resultados esperados en tpch-kit.
Benchmark de rendimiento
ClickHouse realiza un seguimiento del rendimiento de las consultas TPC-H en cada versión publicada. Puede consultar los tiempos de ejecución de las 22 consultas TPC-H (factor de escala 40) en la página de benchmark de versiones de ClickHouse para ver cómo ha evolucionado el rendimiento con el tiempo.