Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

TPC-H (1999)

Популярный бенчмарк, моделирующий внутреннее хранилище данных оптового поставщика. Данные хранятся в схеме третьей нормальной формы, что при выполнении запросов требует большого количества JOIN. Несмотря на свой возраст и нереалистичное предположение о том, что данные распределены равномерно и независимо, TPC-H по-прежнему остается самым популярным OLAP-бенчмарком.

Ссылки

Генерация и импорт данных

Сначала клонируйте репозиторий TPC-H и соберите генератор данных:

git clone https://github.com/gregrahn/tpch-kit.git
cd tpch-kit/dbgen
make

Затем сгенерируйте данные. Параметр -s задаёт коэффициент масштабирования. Например, при -s 100 для таблицы 'lineitem' будет сгенерировано 600 миллионов строк.

./dbgen -s 100

Чтобы ускорить процесс, можно использовать "генерацию фрагментами" (в нескольких процессах):

for i in $(seq 1 8); do
    ./dbgen -s 100 -C 8 -S $i &
done
wait

Подробные размеры таблиц при коэффициенте масштабирования 100:

Таблица размер (в строках) размер (в сжатом виде в ClickHouse)
nation 25 2 kB
region 5 1 kB
part 20.000.000 895 MB
supplier 1.000.000 75 MB
partsupp 80.000.000 4.37 GB
customer 15.000.000 1.19 GB
orders 150.000.000 6.15 GB
lineitem 600.000.000 26.69 GB

(Размеры в сжатом виде в ClickHouse взяты из system.tables.total_bytes и основаны на приведённых ниже определениях таблиц.)

Теперь создайте таблицы в ClickHouse. Их определения доступны в init.sql в репозитории ClickHouse.

Данные можно импортировать следующим образом:

clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO nation FORMAT CSV" < nation.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO region FORMAT CSV" < region.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO part FORMAT CSV" < part.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO supplier FORMAT CSV" < supplier.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO partsupp FORMAT CSV" < partsupp.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO orders FORMAT CSV" < orders.tbl
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO lineitem FORMAT CSV" < lineitem.tbl

Запросы

22 запроса TPC-H можно найти здесь, в репозитории ClickHouse.

Чтобы получить поведение, совместимое со стандартом SQL, и ожидаемые результаты, примените настройки из settings.json. Информацию об известных проблемах и примечания к отдельным запросам см. в README.

Корректность

Результаты запросов совпадают с официальными, если не указано иное. Для проверки создайте базу данных TPC-H с коэффициентом масштабирования = 1 (dbgen, см. выше) и сравните с ожидаемыми результатами в tpch-kit.

Бенчмарк производительности

ClickHouse отслеживает производительность запросов TPC-H во всех выпущенных версиях. На странице бенчмарка версий ClickHouse можно ознакомиться со временем выполнения всех 22 запросов TPC-H (коэффициент масштабирования 40) и проследить, как производительность менялась с течением времени.

Navigation