Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

TPC-H (1999)

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.

Referencias

Generación e importación de datos

Primero, clona el repositorio TPC-H y compila el generador de datos:

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

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

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.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

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.

Navigation