Расширение TPC-H
Расширение tpch реализует генератор данных и запросы для эталонного набора TPC-H.
Установка и загрузка
Расширение tpch поставляется по умолчанию в некоторых сборках DuckDB, в противном случае оно будет автоматически загружено при первом использовании. Если вы хотите установить и загрузить его вручную, выполните:
INSTALL tpch; LOAD tpch;
Использование
Генерация данных
Для генерации данных с коэффициентом масштабирования 1 используйте:
CALL dbgen(sf = 1);
Вызов dbgen не очищает существующие таблицы TPC-H. Для очистки существующих таблиц используйте DROP TABLE перед выполнением dbgen:
DROP TABLE IF EXISTS customer; DROP TABLE IF EXISTS lineitem; DROP TABLE IF EXISTS nation; DROP TABLE IF EXISTS orders; DROP TABLE IF EXISTS part; DROP TABLE IF EXISTS partsupp; DROP TABLE IF EXISTS region; DROP TABLE IF EXISTS supplier;
Выполнение запроса
Для выполнения запроса, например, запроса 4, используйте:
PRAGMA tpch(4);
| o_orderpriority | order_count |
|---|---|
| 1-URGENT | 10594 |
| 2-HIGH | 10476 |
| 3-MEDIUM | 10410 |
| 4-NOT SPECIFIED | 10556 |
| 5-LOW | 10487 |
Вывод списка запросов
Для вывода всех 22 запросов выполните:
FROM tpch_queries();
Эта функция возвращает таблицу со столбцами query_nr и query.
Вывод ожидаемых ответов
Для получения ожидаемых результатов для всех запросов с коэффициентами масштабирования 0.01, 0.1 и 1 выполните:
FROM tpch_answers();
Эта функция возвращает таблицу со столбцами query_nr, scale_factor, и answer.
Генерация схемы
Возможно сгенерировать схему TPC-H без данных, установив коэффициент масштабирования в 0:
CALL dbgen(sf = 0);
Параметры генератора данных
Функция генератора данных dbgen имеет следующие параметры:
| Имя | Тип | Описание |
|---|---|---|
catalog | VARCHAR | Целевой каталог |
children | UINTEGER | Количество партиций |
overwrite | BOOLEAN | (Не используется) |
sf | DOUBLE | Коэффициент масштабирования |
step | UINTEGER | Определяет партицию для генерации, индексируется от 0 до children - 1. Должно быть определено, когда определены аргументы children |
suffix | VARCHAR | Добавлять suffix к именам таблиц |
Предварительно сгенерированные наборы данных
Предварительно сгенерированные базы данных DuckDB для TPC-H доступны для скачивания:
-
tpch-sf1.db(250 МБ) -
tpch-sf3.db(754 МБ) -
tpch-sf10.db(2,5 ГБ) -
tpch-sf30.db(7,6 ГБ) -
tpch-sf100.db(26 ГБ) -
tpch-sf300.db(78 ГБ) -
tpch-sf1000.db(265 ГБ) -
tpch-sf3000.db(796 ГБ)
Использование ресурсов генератором данных
Генерация наборов данных TPC-H для больших коэффициентов масштабирования занимает значительное время. Кроме того, при генерации в одном шаге требуется большой объем памяти. В следующей таблице приводится оценка ресурсов, необходимых для создания файлов баз данных DuckDB, содержащих сгенерированный набор данных TPC-H, используя 128 потоков.
| Коэффициент масштабирования | Размер базы данных | Время генерации данных | Использование памяти генератором |
|---|---|---|---|
| 100 | 26 ГБ | 17 минут | 71 ГБ |
| 300 | 78 ГБ | 51 минута | 211 ГБ |
| 1000 | 265 ГБ | 2 часа 53 минуты | 647 ГБ |
| 3000 | 796 ГБ | 8 часов 30 минут | 1799 ГБ |
Указанные выше цифры были получены путем запуска функции dbgen в одном шаге, например:
CALL dbgen(sf = 300);
Если у вас ограниченный объем доступной памяти, вы можете запустить функцию dbgen поэтапно. Например, вы можете сгенерировать SF300 в 10 шагах:
CALL dbgen(sf = 300, children = 10, step = 0); CALL dbgen(sf = 300, children = 10, step = 1); ... CALL dbgen(sf = 300, children = 10, step = 9);
Ограничение
Функция tpch(⟨query_id⟩) выполняет фиксированный запрос TPC-H с предопределенными параметрами связывания (также известными как параметры подстановки). Изменить параметры запроса с помощью расширения tpch невозможно. Чтобы выполнить запросы с параметрами, предписанными эталонным набором TPC-H, используйте реализацию фреймворка TPC-H.
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/extensions/tpch.html