Spec-Zone.ru › DuckDB

Расширение 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API