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

TPC-H 벤치마크는 TPC라는 비영리단체에서 만든 규격입니다. TPC(Transaction Processing Performance Council)는 1988년에 설립된 비영리 단체로, 데이터베이스 성능 평가 기준의 규격을 정의합니다. 8개의 테이블과 22개 복잡한 쿼리를 테스트할 수 있도록 환경설정 등을 제공합니다.
MySQL 데이터 생성 방법
tpch-dbgen github repo를 clone합니다.
git clone https://github.com/electrum/tpch-dbgen
cd tpch-dbgen
make를 실행합니다. 이 명령은 dbgen 바이너리를 생성하기 위해 컴파일을 수행합니다.
make
dbgen을 실행하여 tbl 파일을 생성합니다. 이 파일들은 각 테이블의 레코드가 있습니다.
./dbgen -s 1
- lineitem table: 주문 라인 상세정보 (수량, 가격, 할인, 세금 등) - 약 600만 행
- orders table: 주문 정보 (주문번호, 고객, 날짜, 상태) - 약 150만 건
- customer table: 고객 정보 (ID, 이름, 주소, 전화, 잔액) - 약 15만 명
- part table: 부품 정보 (부품명, 제조사, 브랜드, 가격)
- supplier table: 공급자 정보 (이름, 주소, 전화, 계정 잔액)
- partsupp table: 부품-공급자 관계 (수량, 공급 비용, 리드 타임)
- nation table: 국가 정보 (국가명, 지역)
- region table: 지역 정보 (지역명, 설명)

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

Postgres 데이터 생성 방법
Postgres를 위한 TPC-H데이터 생성명령어는 Mysql과 같습니다. 하지만 데이터 생성과정에서 사용하는 dbgen 바이너리 컴파일과정이 다릅니다.
postgres는 칼럼 끝이 구분자이면 S3 import할때 에러가 발생합니다.


따라서 데이터를 생성하는 dbgen에서 마지막 구분자를 생성하지 못하도록 컴파일 옵션을 수정해야 합니다. CFLAGS에 -DEOL_HANDLING를 추가합니다. 그리고 make로 컴파일하여 dbgen 바이너리를 생성합니다.
$ vi makefile
CFLAGS = -g -DDBNAME=\"dss\" -D_FILE_OFFSET_BITS=64 -DEOL_HANDLING
$ make
dbgen으로 데이터를 생성하고 칼럼 끝에 구분자가 없는지 확인합니다.
./dbgen -s 1

레코드 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

참고자료
'전공영역 공부 기록' 카테고리의 다른 글
| 크기가 큰 csv파일을 리눅스 명령어로 여러 파일로 분할시키는 방법 (0) | 2025.11.09 |
|---|---|
| RDS S3 Import/export (0) | 2025.11.09 |
| 테라폼으로 내 PC IP를 security group에 설정하는 방법 (0) | 2025.11.08 |
| AWS Auto Scaling Group 배포 전략 (0) | 2025.10.12 |
| Argo CD v3.2 업데이트 내용: Application path에서 "." 또는 ""(공백)을 더 이상 사용할 수 없습니다. (0) | 2025.10.09 |