전공영역 공부 기록

데이터베이스 성능 벤치마크할때 사용하기 좋은 TPC-H

악분 2025. 11. 8. 03:03
반응형

TPC-H 벤치마크란?

RDS의 s3 import/export 성능을 어떻게 평가할까 생각하다가 우연히 AWS블로그 글을 마주쳤습니다. AWS블로그에서는 TPC-H라는 벤치마크를 통해 성능테스트를 진행했습니다.

- AWS 블로그: https://aws.amazon.com/ko/blogs/database/best-practices-for-exporting-and-importing-data-from-amazon-aurora-mysql-to-amazon-s3/

 

 

TPC-H 벤치마크는 TPC라는 비영리단체에서 만든 규격입니다. TPC(Transaction Processing Performance Council)는 1988년에 설립된 비영리 단체로, 데이터베이스 성능 평가 기준의 규격을 정의합니다. 8개의 테이블과 22개 복잡한 쿼리를 테스트할 수 있도록 환경설정 등을 제공합니다.

 

사용방법

tpch-dbgen github repo를 clone합니다.

git clone https://github.com/electrum/tpch-dbgen
cd tpch-dbgen

 

make를 실행합니다. 이 명령은 dbgen 바이너리를 생성하기 위해 컴파일을 수행합니다.

make

 

dbgen을 실행하여 tbl 파일을 생성합니다. 이 파일들은 각 테이블의 레코드가 있습니다.

time ./dbgen -s 1
  • lineitem table: 주문 라인 상세정보 (수량, 가격, 할인, 세금 등) - 약 600만 행
  • orders table: 주문 정보 (주문번호, 고객, 날짜, 상태) - 약 150만 건
  • customer table: 고객 정보 (ID, 이름, 주소, 전화, 잔액) - 약 15만 명
  • part table: 부품 정보 (부품명, 제조사, 브랜드, 가격)
  • supplier table: 공급자 정보 (이름, 주소, 전화, 계정 잔액)
  • partsupp table: 부품-공급자 관계 (수량, 공급 비용, 리드 타임)
  • nation table: 국가 정보 (국가명, 지역)
  • region table: 지역 정보 (지역명, 설명)

 

tbl 파일들은 아래처럼 컬럼이 "|"로 구분되어 있습니다.

 

레코드 import예제 - mysql

dbgen으로 생성한 레코드를 MySQL로 import 해보겠습니다.

 

먼저 tpch 데이터베이스를 생성하고, 테이블을 생성하는 DDL을 실행합니다.

mysql -h $HOST -u$USER -p << EOF
CREATE DATABASE tpch;
USE tpch;
SOURCE dss.ddl;
EOF

 

LINEITEM table에 lineitem.tpl레코드를 import합니다. RDS db.t4g.medium스펙에서 약 2분 3초가 걸렸습니다.

# 로딩 시간 측정
ttime mysql --local-infile=1 -h $HOST -u$USER -p tpch -e \
  "LOAD DATA LOCAL INFILE 'lineitem.tbl' INTO TABLE LINEITEM \
   FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n';"

 

import작업에서 CPU는 약 30%정도 사용했습니다.

 

SELECT문으로 레코드개수를 확인합니다.

mysql -h $HOST -u$USER -p tpch << EOF
SELECT COUNT(*) FROM LINEITEM
EOF

 

참고자료

반응형