Открыть сервис

TPC-H

TPC-H — это стандартизированный тест производительности (бенчмарк) для систем управления базами данных (СУБД), разработанный международной некоммерческой организацией Transaction Processing Performance Council (TPC). TPC-H моделирует работу системы в условиях выполнения сложных аналитических запросов (OLAP — онлайн-аналитическая обработка) и предназначен для оценки способности СУБД обрабатывать большие объёмы данных, выполнять ресурсоёмкие операции соединения, агрегации и сортировки, а также генерировать отчёты.

История и цели создания

Бенчмарк TPC-H был официально принят TPC в 1999 году как замена более раннему тесту TPC-D, который, по мнению сообщества, имел ряд недостатков, включая избыточную сложность и неоднозначность интерпретации результатов. Основной целью разработки TPC-H стало создание объективного, воспроизводимого и сопоставимого инструмента для оценки производительности СУБД в сценариях, характерных для систем поддержки принятия решений (DSS) и хранилищ данных.

Ключевые задачи, которые решает TPC-H:

  • Объективность: Результаты теста, сертифицированные TPC, можно сравнивать между различными СУБД (коммерческими и открытыми) и аппаратными конфигурациями.
  • Реалистичность: Нагрузка, создаваемая тестом, имитирует типичные аналитические запросы в бизнес-среде.
  • Воспроизводимость: Тест имеет строго регламентированную процедуру выполнения, что позволяет получить одинаковые результаты при повторном запуске на той же конфигурации.

Структура и компоненты теста

TPC-H состоит из нескольких ключевых элементов, которые вместе формируют комплексную оценку производительности.

Модель данных

Схема данных TPC-H представляет собой реляционную модель, состоящую из восьми таблиц, которые моделируют работу оптового поставщика. Таблицы делятся на два типа:

  • Таблицы измерений (Dimension Tables): Содержат статические или медленно меняющиеся атрибуты сущностей. К ним относятся:
  • PART (детали)
  • SUPPLIER (поставщики)
  • PARTSUPP (поставки деталей)
  • CUSTOMER (клиенты)
  • NATION (страны)
  • REGION (регионы)
  • Таблица фактов (Fact Table): Содержит записи о совершённых операциях.
  • LINEITEM (строки заказов) — центральная таблица, содержащая информацию о каждой позиции в заказе. Именно она, как правило, имеет наибольший объём.

Набор запросов (Queries)

Бенчмарк включает 22 фиксированных аналитических запроса (Q1–Q22). Каждый запрос представляет собой сложный SQL-запрос, который включает:

  • Многотабличные соединения (JOIN).
  • Агрегатные функции (SUM, COUNT, AVG).
  • Группировку (GROUP BY) и сортировку (ORDER BY).
  • Подзапросы и коррелированные подзапросы.
  • Операции с датами и строками.

Примеры типов запросов:

  • Q1: Отчёт о ценообразовании и скидках по всем строкам заказа за определённый период.
  • Q3: Поиск клиентов, сделавших заказы на большую сумму.
  • Q6: Прогнозирование роста доходов от определённой категории товаров.
  • Q18: Поиск крупных заказов (с большим количеством позиций).

Набор обновлений (Refresh Functions)

TPC-H включает две функции обновления данных (RF1 и RF2), которые имитируют добавление новых заказов и удаление старых. Это необходимо для оценки способности СУБД справляться с конкурентной нагрузкой (смесь запросов и обновлений).

Метрики производительности

Основным результатом теста TPC-H является композитный показатель производительности (TPC-H Composite Query-per-Hour Performance Metric, QphH@Size). Он измеряется в количестве запросов в час и зависит от размера базы данных (Scale Factor, SF).

  • Масштабный коэффициент (Scale Factor, SF): Определяет начальный объём данных. Чем выше SF, тем больше строк в таблицах. Стандартные значения: SF 1 (1 ГБ), SF 10 (10 ГБ), SF 100 (100 ГБ), SF 1000 (1 ТБ), SF 10000 (10 ТБ) и т. д.
  • Показатель QphH@Size: Рассчитывается на основе времени выполнения всех 22 запросов и двух функций обновления. Формула учитывает как мощность (скорость выполнения запросов), так и пропускную способность (способность обрабатывать несколько потоков).
  • Стоимость за QphH ($/QphH): Вторая важная метрика — отношение общей стоимости системы (аппаратное обеспечение, СУБД, поддержка на 3 года) к показателю QphH. Она позволяет оценить экономическую эффективность решения.

Процедура выполнения теста

Процесс сертифицированного тестирования TPC-H строго регламентирован и состоит из двух фаз:

  1. Фаза загрузки (Load Test): Данные генерируются с помощью утилиты dbgen, загружаются в СУБД, и на них создаются индексы и статистики.
  2. Фаза выполнения (Power and Throughput Test):
  • Power Test: Запросы выполняются последовательно, один за другим, в одном потоке. Измеряется время выполнения каждого запроса.
  • Throughput Test: Запросы выполняются параллельно в нескольких потоках (обычно 2–4). Одновременно запускаются функции обновления. Измеряется общее время выполнения всех потоков.

Результаты теста публикуются на официальном сайте TPC и должны сопровождаться полным отчётом (Full Disclosure Report), который содержит все детали конфигурации, настройки СУБД и времена выполнения.

Значение и критика

Значение для индустрии

TPC-H является одним из наиболее авторитетных и широко используемых бенчмарков в области баз данных. Он позволяет:

  • Сравнивать производительность различных СУБД (Oracle, Microsoft SQL Server, PostgreSQL, MySQL, IBM Db2, ClickHouse и др.) на сопоставимых условиях.
  • Оценивать влияние аппаратного обеспечения (процессор, память, диски) на скорость аналитических запросов.
  • Выявлять узкие места в архитектуре СУБД и оптимизировать настройки (например, параметры памяти, планировщика запросов, индексов).

Критика и ограничения

Несмотря на широкое распространение, TPC-H подвергается критике по нескольким причинам:

  • Устаревшая модель данных: Схема данных (звезда с одной таблицей фактов) не отражает современные реалии хранилищ данных, которые часто используют более сложные многомерные модели (снежинка, Data Vault) или колоночные форматы.
  • Фиксированный набор запросов: 22 запроса не охватывают всё разнообразие реальных аналитических задач, особенно связанных с машинным обучением, потоковой обработкой или сложной аналитикой временных рядов.
  • Отсутствие поддержки современных технологий: TPC-H не учитывает особенности работы с распределёнными СУБД, облачными хранилищами, системами на основе MapReduce или Spark.
  • Возможность «подгонки» результатов: Разработчики СУБД могут оптимизировать свои системы именно под выполнение запросов TPC-H, что не всегда коррелирует с производительностью в реальных условиях. Существует термин «benchmarketing» — маркетинговая игра на результатах тестов.

Альтернативы

Для более современной оценки аналитических систем были разработаны другие бенчмарки:

  • TPC-DS: Более сложный и реалистичный тест, использующий модель данных «снежинка» и запросы, характерные для современных хранилищ данных.
  • TPCx-BB: Бенчмарк для оценки производительности систем больших данных (Big Data), включающий алгоритмы машинного обучения.
  • Star Schema Benchmark (SSB): Упрощённый вариант TPC-H, фокусирующийся на запросах к схеме «звезда».
  • ClickBench: Специализированный бенчмарк для аналитических СУБД, ориентированный на колоночные системы.

Источники

  • Transaction Processing Performance Council (TPC). TPC Benchmark H (TPC-H) Standard Specification, Revision 2.18.0. 2021.
  • Transaction Processing Performance Council (TPC). TPC Benchmark H (TPC-H) Full Disclosure Report Guidelines.
  • Gray, J. (Ed.). The Benchmark Handbook for Database and Transaction Processing Systems. Morgan Kaufmann, 1993.
  • Poess, M., & Floyd, C. (2000). New TPC benchmarks for decision support and web commerce. ACM SIGMOD Record, 29(4), 64–71.
  • Официальный сайт TPC: www.tpc.org.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →