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-H | TPC-C | TPC-DS | |
|---|---|---|---|
| Carga | Suporte à decisão: consultas ad hoc mais atualizações de dados | OLTP: os pedidos de um atacadista | Suporte à decisão: consultas mais manutenção de dados |
| Escopo | 8 tabelas, 22 consultas, 2 funções de atualização | 9 tipos de tabela, 5 tipos de transação | Esquema floco de neve, 7 tabelas fato, 99 consultas |
| Métrica principal | QphH@Size e $/kQphH@Size | tpmC | QphDS@SF e $/kQphDS@SF |
| Versão atual | 3.0.1 | 5.11.0 | 4.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
- pgbench: benchmark e teste de carga do PostgreSQL
- Como usar o sysbench: benchmarks de CPU, disco e MySQL
- YCSB: cargas de trabalho A-F, execução e limites
- redis-benchmark: como usar e ler os resultados
- Vazão vs latência: como se relacionam sob carga
As afirmações técnicas deste artigo não foram revisadas de forma independente.