TPC-H 확장

TPC-H 확장

tpch 확장은 TPC-H 벤치마크의 데이터 생성기와 쿼리를 구현해요. 표준 데이터셋을 만들고 벤치마크 쿼리를 실행해 성능을 측정하고 싶을 때 유용하답니다.

출처: 문서

본문

tpch 확장은 TPC-H 벤치마크의 데이터 생성기와 쿼리를 구현해요.

설치와 로드

tpch 확장은 일부 DuckDB 빌드에 기본 포함되며, 그렇지 않으면 첫 사용 시 자동 로드돼요. 수동으로 설치·로드하려면 다음을 실행하세요.

INSTALL tpch;
LOAD tpch;

TPC-H 워크로드로 벤치마킹

DuckDB로 전체 TPC-H 워크로드를 실행하려면 독립 실행형 DuckDB TPC-H 구현 프로젝트를 사용하세요.

사용법

데이터 생성

스케일 팩터 1에 대한 데이터를 생성하려면:

CALL dbgen(sf = 1);

dbgen을 호출해도 기존 TPC-H 테이블은 정리되지 않아요. 기존 테이블을 정리하려면 dbgen을 실행하기 전에 DROP TABLE을 사용하세요.

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_nrquery 컬럼이 있는 테이블을 반환해요.

기대 답안 나열

스케일 팩터 0.01, 0.1, 1에 대한 모든 쿼리의 기대 결과를 생성하려면:

FROM tpch_answers();

이 함수는 query_nr, scale_factor, answer 컬럼이 있는 테이블을 반환해요.

스키마 생성

스케일 팩터를 0으로 설정하면 데이터 없이 TPC-H의 스키마만 생성할 수 있어요.

CALL dbgen(sf = 0);

데이터 생성기 파라미터

데이터 생성기 함수 dbgen에는 다음 파라미터가 있어요.

이름 타입 설명
catalog VARCHAR 대상 카탈로그
children UINTEGER 파티션 수
overwrite BOOLEAN (사용되지 않음)
sf DOUBLE 스케일 팩터
step UINTEGER 생성할 파티션을 정의하며, 0부터 children - 1까지 인덱싱됨. children 인자가 정의되면 정의해야 함
suffix VARCHAR 테이블 이름에 suffix 추가

사전 생성된 데이터셋

TPC-H용으로 사전 생성된 DuckDB 데이터베이스를 다운로드할 수 있어요.

  • tpch-sf1.db (250 MB)
  • tpch-sf3.db (754 MB)
  • tpch-sf10.db (2.5 GB)
  • tpch-sf30.db (7.6 GB)
  • tpch-sf100.db (26 GB)
  • tpch-sf300.db (78 GB)
  • tpch-sf1000.db (265 GB)
  • tpch-sf3000.db (796 GB)

경고 — tpch 확장이 생성한 TPC-H 데이터베이스는 공식 TPC-H 사양과 약간의 차이가 있어요. 완전히 TPC 규격을 준수하는 데이터셋을 얻으려면 tpchgen-cli 프로젝트를 사용하세요.

제한 사항

tpch(⟨query_id⟩) 함수는 미리 정의된 바인드 파라미터(일명 대입 파라미터)로 고정된 TPC-H 쿼리를 실행해요. tpch 확장으로 쿼리 파라미터를 변경하는 것은 불가능해요. TPC-H 벤치마크가 규정한 파라미터로 쿼리를 실행하려면 TPC-H 프레임워크 구현을 사용하세요.

더 알아보기 (Learn more)

  • 확장 자동 로드는 extensions/overview 문서를 참고해 주세요.