Guias

TPC-H: o que o benchmark mede e como executá-lo

8 min de leitura

O TPC-H é o benchmark de suporte à decisão do Transaction Processing Performance Council (TPC): 22 consultas de negócio e duas funções de atualização rodam sobre oito tabelas que o programa dbgen do TPC preenche com um fator de escala escolhido, em que o fator 1 equivale a cerca de 1 GB. A métrica dele, QphH@Size, combina um teste de potência com um único fluxo e um teste de vazão com vários fluxos, e os resultados oficiais acrescentam um preço por kQphH@Size. Só resultados auditados e publicados no tpc.org são oficiais; qualquer número no estilo TPC-H publicado fora do tpc.org conta como carga derivada pelas regras de uso justo do TPC e não pode ser comparado com resultados oficiais.

Não executamos o benchmark para este guia. Os fatos vêm do tpc.org, da especificação na revisão 3.0.1, que o tpc.org indica como atual, e da documentação de cada ferramenta, tudo conferido em 1º de novembro de 2026. As avaliações são nossas.

TPC-HTPC-CTPC-DS
CargaSuporte à decisão: consultas ad hoc mais atualizações de dadosOLTP: os pedidos de um atacadistaSuporte à decisão: consultas mais manutenção de dados
Escopo8 tabelas, 22 consultas, 2 funções de atualização9 tipos de tabela, 5 tipos de transaçãoEsquema floco de neve, 7 tabelas fato, 99 consultas
Métrica principalQphH@Size e $/kQphH@SizetpmCQphDS@SF e $/kQphDS@SF
Versão atual3.0.15.11.04.0.0

O que o TPC-H mede?

A rapidez com que um sistema responde a consultas analíticas complexas sobre um grande volume de dados enquanto vendas novas chegam e antigas são apagadas. Uma única especificação define o esquema, as consultas, os dados e as regras.

A página do TPC-H descreve um conjunto de consultas ad hoc orientadas a negócio com modificações de dados simultâneas (conferido em 1º de novembro de 2026). A especificação define oito tabelas: PART, PARTSUPP, LINEITEM, ORDERS, CUSTOMER, SUPPLIER, NATION e REGION. Todas, menos as duas últimas, crescem com o fator de escala; a LINEITEM, a maior, tem cerca de 6.000.000 de linhas por unidade. A função de atualização RF1 insere linhas novas em ORDERS e LINEITEM, e a RF2 remove vendas antigas (conferido em 1º de novembro de 2026).

Como a pontuação do TPC-H é calculada?

Uma execução é um teste de potência seguido de um teste de vazão, e o QphH@Size é a média geométrica dos dois resultados. A métrica de preço é o preço total do sistema dividido pelo QphH@Size, vezes 1.000.

No teste de potência, um fluxo de atualização roda a RF1, uma única sessão de consultas roda as 22 consultas uma vez, depois o fluxo de atualização roda a RF2. O Power@Size é 3.600 vezes o fator de escala, dividido pela média geométrica desses 24 tempos. No teste de vazão, vários fluxos de consultas rodam ao lado de um fluxo de atualização: no mínimo 2 com fator 1, chegando a 11 com fator 100.000. O Throughput@Size é o número de consultas por hora somando todos os fluxos, vezes o fator de escala. Um teste completo tem duas execuções, e o patrocinador informa a que tem o QphH mais baixo (tudo segundo a especificação, conferido em 1º de novembro de 2026).

A média geométrica dá o mesmo peso a cada consulta, então reduzir pela metade o tempo de uma única consulta aumenta o Power em só cerca de 3%. Um resultado oficial usa um fator de escala de uma lista fixa: 1, 10, 30, 100 e assim por diante até 100.000.

Quem publica resultados do TPC-H, e quais contam?

Os fornecedores que patrocinam um teste publicam resultados auditados no tpc.org, e só esses são oficiais. Qualquer outra execução é uma carga derivada, com regras próprias.

A especificação exige uma auditoria independente feita por um auditor certificado pelo TPC. A referência rápida de uso justo (fair use) do TPC só permite o nome do TPC ao lado de resultados oficiais publicados. Todo o resto precisa do prefixo “Derived from”, não pode usar a métrica do TPC, deve trazer um aviso de que não é comparável aos resultados publicados, deveria descrever o ambiente e os desvios e não pode ser comparado com resultados oficiais (conferido em 1º de novembro de 2026).

Como você roda o TPC-H por conta própria?

Gere os dados e o texto das consultas, carregue as tabelas e depois rode o teste de potência seguido do teste de vazão. Você pode usar as ferramentas do TPC, um kit feito para um banco específico ou um motor com gerador embutido.

A página de especificações atuais do TPC oferece um pacote de ferramentas gratuito: você se cadastra, aceita uma licença e recebe o link por e-mail. Segundo a especificação, o DBGen deve produzir os dados e o QGen o texto das consultas (conferido em 1º de novembro de 2026).

Para PostgreSQL, a página TPC-H da wiki não traz um procedimento passo a passo e aponta para o DBT-3, um kit completo que a página do DBT-3 na wiki chama de implementação da especificação compatível com o uso justo. O HammerDB traz o TPROC-H, que a documentação dele descreve como uma carga de código aberto derivada do TPC-H e não comparável aos resultados publicados. Ele roda no PostgreSQL, MySQL, Oracle e outros motores, e a documentação recomenda comparar a média geométrica dos tempos de consulta em vez de calcular um QphH (tudo conferido em 1º de novembro de 2026).

O DuckDB tem uma extensão tpch que, segundo a documentação, implementa o gerador de dados e as consultas. Estas linhas geram o fator 1, rodam a consulta 4 e listam as 22 consultas:

CALL dbgen(sf = 1);
PRAGMA tpch(4);
FROM tpch_queries();

A mesma página avisa que os dados diferem um pouco da especificação, que cada consulta roda com parâmetros fixos e que o dbgen não apaga as tabelas existentes. Para dados totalmente conformes, ela aponta para o tpchgen-cli (conferido em 1º de novembro de 2026).

Como ler resultados do TPC-H com honestidade?

Compare resultados só com o mesmo fator de escala e a mesma versão do benchmark, e leia cada métrica com o sufixo de tamanho. Um gráfico de tempos de consultas isoladas não mostra nem o teste de potência nem o teste de vazão.

A página de resultados agrupa os resultados por tamanho do banco e traz três notas: resultados das versões 2 e 3 não são comparáveis, preço/desempenho em moedas diferentes não deve ser comparado, e comparações entre tamanhos de banco são enganosas (conferido em 1º de novembro de 2026). A especificação acrescenta que resultados com números de fluxos diferentes são comparáveis com o mesmo tamanho de banco.

Numa execução informal, procure o que as regras de uso justo pedem: hardware e memória, mudanças no esquema ou no texto das consultas e se as funções de atualização rodaram. Um post que mede as 22 consultas uma vez, com cache quente e sem fluxo de atualização, só se aproxima da parte de consultas de um teste de potência, embora uma execução assim ainda ajude a acompanhar as suas próprias regressões. Sobre taxa de consultas e tempo de resposta, veja vazão vs latência.

Quando usar outra coisa em vez do TPC-H?

Quando a carga é transacional, quando você quer um benchmark analítico mais novo ou quando a pergunta é o que os usuários sentem. O benchmark modela uma carga analítica, sem transações curtas nem camada de aplicação.

Escolha o TPC-DS para um teste de suporte à decisão mais amplo: a especificação na versão 4.0.0 usa um esquema floco de neve com sete tabelas fato e 99 consultas, e a página de apresentação diz que os resultados da versão 4 não são comparáveis com versões anteriores. Escolha o TPC-C, ou o TPROC-C do HammerDB, para OLTP de entrada de pedidos: a página do TPC-C descreve cinco tipos de transação medidos em tpmC (tudo conferido em 1º de novembro de 2026). Para uma checagem rápida de um único banco, o pgbench cobre o PostgreSQL e o sysbench cobre o MySQL.

A LoadFocus, que publica este site, não roda o TPC-H; os testes dela são voltados a endpoints web e de API. A LoadFocus roda planos de teste JMeter e scripts k6 a partir de 25 regiões de nuvem, sem driver JDBC e sem módulo SQL, então não consegue se conectar ao banco de dados. Para esse trabalho, escolha uma ferramenta de benchmark de banco de dados como a extensão do DuckDB, o DBT-3 ou o HammerDB em vez da LoadFocus, e use a LoadFocus para a camada web ou de API que fica na frente do banco, começando pelo template para os endpoints por trás das consultas pesadas.

FAQ

Qual é a diferença entre TPC-H e TPC-DS? Os dois são benchmarks de suporte à decisão do TPC. O TPC-H usa 8 tabelas e 22 consultas e informa o QphH@Size, enquanto o TPC-DS usa um esquema floco de neve com sete tabelas fato e 99 consultas e informa o QphDS@SF.

O que significa QphH@Size no TPC-H? É a métrica composta de consultas por hora: a média geométrica dos resultados do teste de potência e do teste de vazão em um tamanho de banco. O sufixo indica esse tamanho, por exemplo QphH@1000GB, e resultados em tamanhos diferentes não devem ser comparados.

A LoadFocus consegue rodar o TPC-H? Não. A LoadFocus roda planos de teste JMeter e scripts k6 voltados a endpoints web e de API e não tem conexão SQL, então use uma ferramenta de benchmark de banco de dados para o TPC-H e a LoadFocus para a camada de aplicação na frente do banco.

Leituras relacionadas


As afirmações técnicas deste artigo não foram revisadas de forma independente.

LoadFocus team
Escrito pela equipe da LoadFocus, as pessoas por trás de um serviço de teste de carga na nuvem.