Популярный бенчмарк, моделирующий внутреннее хранилище данных оптового поставщика. Данные хранятся в схеме третьей нормальной формы, что при выполнении запросов требует большого количества JOIN. Несмотря на свой возраст и нереалистичное предположение о том, что данные распределены равномерно и независимо, TPC-H по-прежнему остается самым популярным OLAP-бенчмарком.
Затем сгенерируйте данные. Параметр -s задаёт коэффициент масштабирования. Например, при -s 100 для таблицы 'lineitem' будет сгенерировано 600 миллионов строк.
./dbgen -s 100
Чтобы ускорить процесс, можно использовать "генерацию фрагментами" (в нескольких процессах):
for i in $(seq 1 8); do ./dbgen -s 100 -C 8 -S $i &donewait
Подробные размеры таблиц при коэффициенте масштабирования 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.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO region FORMAT CSV" < region.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO part FORMAT CSV" < part.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO supplier FORMAT CSV" < supplier.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO partsupp FORMAT CSV" < partsupp.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.tblclickhouse-client --format_csv_delimiter '|' --query "INSERT INTO orders FORMAT CSV" < orders.tblclickhouse-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) и проследить, как производительность менялась с течением времени.