Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

TPC-H (1999)

Um benchmark popular que modela o data warehouse interno de um fornecedor atacadista. Os dados são armazenados em uma representação de terceira forma normal, o que exige muitas junções durante a execução das consultas. Apesar da sua idade e da suposição irrealista de que os dados são distribuídos de forma uniforme e independente, o TPC-H continua sendo o benchmark OLAP mais popular até hoje.

Referências

Geração e Importação de Dados

Primeiro, faça o checkout do repositório TPC-H e compile o gerador de dados:

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

Em seguida, gere os dados. O parâmetro -s especifica o fator de escala. Por exemplo, com -s 100, são geradas 600 milhões de linhas na tabela 'lineitem'.

./dbgen -s 100

Para acelerar, você pode usar geração em "fragmentos" (em vários processos):

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

Tamanhos detalhados das tabelas com fator de escala 100:

Tabela tamanho (em linhas) tamanho (comprimido no 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

(Os tamanhos comprimidos no ClickHouse são obtidos de system.tables.total_bytes e têm como base as definições de tabela abaixo.)

Agora, crie as tabelas no ClickHouse. As definições de tabela estão disponíveis em init.sql no repositório do ClickHouse.

Os dados podem ser importados da seguinte forma:

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

As 22 consultas do TPC-H podem ser encontradas aqui no repositório do ClickHouse.

Para obter um comportamento compatível com o padrão SQL e os resultados esperados, aplique as configurações em settings.json. Consulte o README para ver problemas conhecidos e observações sobre consultas específicas.

Corretude

Os resultados das consultas correspondem aos resultados oficiais, salvo indicação em contrário. Para verificar, gere um banco de dados TPC-H com fator de escala = 1 (dbgen, veja acima) e compare com os resultados esperados no tpch-kit.

Benchmark de desempenho

O ClickHouse monitora o desempenho das consultas TPC-H em todas as versões lançadas. Você pode explorar os tempos de execução das 22 consultas TPC-H (fator de escala 40) na página benchmark de versões do ClickHouse para ver como o desempenho evoluiu ao longo do tempo.

Navigation