TPC-H: qué mide el benchmark y cómo ejecutarlo
8 min de lectura
TPC-H es el benchmark de soporte a la decisión del Transaction Processing Performance Council (TPC): 22 consultas de negocio y dos funciones de actualización se ejecutan sobre ocho tablas que el programa dbgen del TPC llena con un factor de escala elegido, donde el factor 1 equivale a aproximadamente 1 GB. Su métrica, QphH@Size, combina una prueba de potencia con un solo flujo y una prueba de throughput con varios flujos, y los resultados oficiales añaden un precio por kQphH@Size. Solo los resultados auditados publicados en tpc.org son oficiales; cualquier cifra tipo TPC-H publicada fuera de tpc.org cuenta como una carga derivada según las reglas de uso justo del TPC y no está permitido compararla con los resultados oficiales.
No hemos ejecutado el benchmark para esta guía. Los datos proceden de tpc.org, de la especificación en su revisión 3.0.1, que tpc.org marca como actual, y de la documentación de cada herramienta, todo comprobado el 1 de noviembre de 2026. Las valoraciones son nuestras.
| TPC-H | TPC-C | TPC-DS | |
|---|---|---|---|
| Carga | Soporte a la decisión: consultas ad hoc más actualizaciones de datos | OLTP: los pedidos de un mayorista | Soporte a la decisión: consultas más mantenimiento de datos |
| Alcance | 8 tablas, 22 consultas, 2 funciones de actualización | 9 tipos de tablas, 5 tipos de transacciones | Esquema en copo de nieve, 7 tablas de hechos, 99 consultas |
| Métrica principal | QphH@Size y $/kQphH@Size | tpmC | QphDS@SF y $/kQphDS@SF |
| Versión actual | 3.0.1 | 5.11.0 | 4.0.0 |
¿Qué mide TPC-H?
La rapidez con la que un sistema responde a consultas analíticas complejas sobre un gran volumen de datos mientras llegan ventas nuevas y se borran las antiguas. Una sola especificación define el esquema, las consultas, los datos y las reglas.
La página de TPC-H describe un conjunto de consultas ad hoc orientadas al negocio junto con modificaciones de datos simultáneas (comprobado el 1 de noviembre de 2026). La especificación define ocho tablas: PART, PARTSUPP, LINEITEM, ORDERS, CUSTOMER, SUPPLIER, NATION y REGION. Todas salvo las dos últimas crecen con el factor de escala; LINEITEM, la mayor, tiene unos 6.000.000 de filas por unidad. La función de actualización RF1 inserta filas nuevas en ORDERS y LINEITEM, y RF2 elimina ventas antiguas (comprobado el 1 de noviembre de 2026).
¿Cómo se calcula la puntuación de TPC-H?
Una ejecución es una prueba de potencia seguida de una prueba de throughput, y QphH@Size es la media geométrica de ambos resultados. La métrica de precio es el precio total del sistema dividido por QphH@Size, multiplicado por 1.000.
En la prueba de potencia, un flujo de actualización ejecuta RF1, una única sesión de consultas ejecuta las 22 consultas una vez y luego el flujo de actualización ejecuta RF2. Power@Size es 3.600 por el factor de escala, dividido por la media geométrica de esos 24 tiempos. En la prueba de throughput, varios flujos de consultas corren junto a un flujo de actualización: al menos 2 con factor 1 y hasta 11 con factor 100.000. Throughput@Size son las consultas por hora de todos los flujos, multiplicadas por el factor de escala. Una prueba completa tiene dos ejecuciones, y el patrocinador informa de la que tiene el QphH más bajo (todo según la especificación, comprobado el 1 de noviembre de 2026).
La media geométrica da a cada consulta el mismo peso, así que reducir a la mitad el tiempo de una sola consulta sube Power solo un 3 % aproximadamente. Un resultado oficial usa un factor de escala de una lista fija: 1, 10, 30, 100 y así hasta 100.000.
¿Quién publica resultados de TPC-H y cuáles cuentan?
Los fabricantes que patrocinan una prueba publican resultados auditados en tpc.org, y solo esos son oficiales. Cualquier otra ejecución es una carga derivada con sus propias reglas.
La especificación exige una auditoría independiente a cargo de un auditor certificado por el TPC. La referencia rápida de uso justo (fair use) del TPC solo permite el nombre del TPC junto a resultados oficiales publicados. Todo lo demás necesita el prefijo «Derived from», no puede usar la métrica del TPC, debe incluir un aviso de que no es comparable con los resultados publicados, debería describir su entorno y sus desviaciones y no puede compararse con resultados oficiales (comprobado el 1 de noviembre de 2026).
¿Cómo ejecutas TPC-H por tu cuenta?
Genera los datos y el texto de las consultas, carga las tablas y luego ejecuta la prueba de potencia seguida de la de throughput. Puedes usar las herramientas del TPC, un kit hecho para una base de datos concreta o un motor con generador integrado.
La página de especificaciones actuales del TPC ofrece un paquete de herramientas gratuito: te registras, aceptas una licencia y recibes el enlace por correo. Según la especificación, DBGen debe producir los datos y QGen el texto de las consultas (comprobado el 1 de noviembre de 2026).
Para PostgreSQL, la página TPC-H de la wiki no da un procedimiento paso a paso y remite a DBT-3, un kit completo que la página DBT-3 de la wiki describe como una implementación de la especificación conforme al uso justo. HammerDB incluye TPROC-H, que su documentación describe como una carga de código abierto derivada de TPC-H y no comparable con los resultados publicados. Funciona sobre PostgreSQL, MySQL, Oracle y otros motores, y la documentación recomienda comparar la media geométrica de los tiempos de consulta en lugar de calcular un QphH (todo comprobado el 1 de noviembre de 2026).
DuckDB tiene una extensión tpch que, según su documentación, implementa el generador de datos y las consultas. Estas líneas generan el factor 1, ejecutan la consulta 4 y listan las 22 consultas:
CALL dbgen(sf = 1);
PRAGMA tpch(4);
FROM tpch_queries();
La misma página advierte de que los datos difieren un poco de la especificación, de que cada consulta se ejecuta con parámetros fijos y de que dbgen no borra las tablas existentes. Para datos totalmente conformes remite a tpchgen-cli (comprobado el 1 de noviembre de 2026).
¿Cómo lees con honestidad los resultados de TPC-H?
Compara resultados solo con el mismo factor de escala y la misma versión del benchmark, y lee cada métrica con su sufijo de tamaño. Un gráfico de tiempos de consultas sueltas no muestra ni la prueba de potencia ni la de throughput.
La página de resultados agrupa los resultados por tamaño de base de datos y lleva tres notas: los resultados de las versiones 2 y 3 no son comparables, la relación precio/rendimiento en monedas distintas no debe compararse y las comparaciones entre tamaños de base de datos son engañosas (comprobado el 1 de noviembre de 2026). La especificación añade que los resultados con distinto número de flujos son comparables con el mismo tamaño de base de datos.
En una ejecución informal, busca lo que piden las reglas de uso justo: hardware y memoria, cambios en el esquema o en el texto de las consultas y si se ejecutaron las funciones de actualización. Un artículo que mide las 22 consultas una vez, con la caché caliente y sin flujo de actualización, solo se aproxima a la parte de consultas de una prueba de potencia, aunque una ejecución así sigue siendo útil para controlar tus propias regresiones. Sobre el ritmo de consultas frente al tiempo de respuesta, consulta rendimiento vs latencia.
¿Cuándo conviene usar algo distinto de TPC-H?
Cuando la carga es transaccional, cuando quieres un benchmark analítico más reciente o cuando la pregunta es qué notan los usuarios. El benchmark modela una carga analítica, sin transacciones cortas ni capa de aplicación.
Elige TPC-DS para una prueba de soporte a la decisión más amplia: su especificación en la versión 4.0.0 usa un esquema en copo de nieve con siete tablas de hechos y 99 consultas, y su página de presentación indica que los resultados de la versión 4 no son comparables con versiones anteriores. Elige TPC-C, o el TPROC-C de HammerDB, para OLTP de entrada de pedidos: la página de TPC-C describe cinco tipos de transacciones medidos en tpmC (todo comprobado el 1 de noviembre de 2026). Para una comprobación rápida de una sola base de datos, pgbench cubre PostgreSQL y sysbench cubre MySQL.
LoadFocus, que publica este sitio, no ejecuta TPC-H; sus pruebas se dirigen a endpoints web y de API. LoadFocus ejecuta planes de prueba JMeter y scripts de k6 desde 25 regiones en la nube, sin driver JDBC ni módulo SQL, así que no puede conectarse a la base de datos. Para este trabajo, elige una herramienta de benchmark de bases de datos como la extensión de DuckDB, DBT-3 o HammerDB en lugar de LoadFocus, y usa LoadFocus para la capa web o API que va delante de la base de datos.
FAQ
¿Qué diferencia hay entre TPC-H y TPC-DS? Los dos son benchmarks de soporte a la decisión del TPC. TPC-H usa 8 tablas y 22 consultas e informa de QphH@Size, mientras que TPC-DS usa un esquema en copo de nieve con siete tablas de hechos y 99 consultas e informa de QphDS@SF.
¿Qué significa QphH@Size en TPC-H? Es la métrica compuesta de consultas por hora: la media geométrica de los resultados de la prueba de potencia y de la prueba de throughput con un tamaño de base de datos. El sufijo indica ese tamaño, por ejemplo QphH@1000GB, y los resultados con tamaños distintos no deben compararse.
¿Puede LoadFocus ejecutar TPC-H? No. LoadFocus ejecuta planes de prueba JMeter y scripts de k6 dirigidos a endpoints web y de API y no tiene conexión SQL, así que usa una herramienta de benchmark de bases de datos para TPC-H y LoadFocus para la capa de aplicación que va delante de la base de datos.
Lecturas relacionadas
- pgbench: benchmark y pruebas de carga de PostgreSQL
- Cómo usar sysbench: benchmarks de CPU, disco y MySQL
- YCSB: cargas de trabajo A-F, ejecución y límites
- redis-benchmark: cómo usarlo y leer sus resultados
- Rendimiento vs latencia: cómo se relacionan bajo carga
Las afirmaciones técnicas de este artículo no se han revisado de forma independiente.