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 строго регламентирован и состоит из двух фаз:
- Фаза загрузки (Load Test): Данные генерируются с помощью утилиты
dbgen, загружаются в СУБД, и на них создаются индексы и статистики. - Фаза выполнения (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 →