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_nr과 query 컬럼이 있는 테이블을 반환해요.
기대 답안 나열
스케일 팩터 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문서를 참고해 주세요.