컴라면
컴 라 면
컴라면
전체 방문자
오늘
어제
  • 분류 전체보기 (8)
    • Database (4)
      • PostgreSQL (4)
    • Languages (1)
      • C++ (1)
      • Shell Script (0)
    • 자료구조 (0)
    • 운영체제 (1)
      • Linux Tips (1)
    • 알고리즘 문제풀이 (0)
      • LeetCode (0)
    • 개발 툴 (2)
      • Git (2)
      • 팁 (0)
    • 삽질 (0)
      • mysql 설치 (0)
      • 리눅스 (0)
    • 기타 (0)
      • 마크다운 (0)
    • 티스토리 팁 (0)

블로그 메뉴

  • HOME
  • TAG
  • MEDIA LOG
  • LOCATION LOG
  • GUEST BOOK
  • ADMIN
  • WRITE

공지사항

인기 글

태그

  • 네임스페이스
  • blockdev
  • namespace
  • Git
  • std 네임스페이스
  • tpch
  • 설치
  • postgres
  • postgresql
  • correlation
  • tpc-h
  • 생활코딩
  • readahead
  • C++

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
컴라면

컴 라 면

Database/PostgreSQL

PostgreSQL에서 TPC-H 사용하기

2018. 4. 10. 15:37

1. TPC-H 다운로드 및 설치

  1. TPC-H Tools 다운로드 : http://www.tpc.org/default.asp
  2. unzip tpch-tools.zip
  3. tpch-tools 디렉토리에 dbgen, dev-tools, ref-data 3개의 디렉토리 확인
  4. dbgen 디렉토리에서 Makefile 생성 (makefile.suite 이용
  5. cp makefile.suite Makefile
  6. Makefile에 환경설정 값 기입
  7. CC = gcc DATABASE = ORACLE MACHINE = LINUX WORKLOAD = TPCH
  8. make
  9. dbgen 명령으로 data 생성
  10. ./dbgen -s 10 # 숫자 1은 약 1GB
  11. Oracle-like CSV 파일들이 생성 완료
  12. ( customer.tbl lineitem.tbl nation.tbl orders.tbl partsupp.tbl part.tbl region.tbl supplier.tbl )

2. PostgreSQL에서 TPC-H 수행하기

reference : https://github.com/tvondra/pg_tpch

  • Oracle-like CSV 파일을 PostgreSQL에 알맞은 CSV 파일의 형태로 변환해야함
$ for i in `ls *.tbl`; do sed 's/|$//' $i > ${i/tbl/csv}; echo $i; done;

( *.tbl 파일의 각 row의 마지막 | 문자를 제거한 뒤, 확장자를 csv로 변환하는 명령어 )

  • Query 생성
  • pg_tpch/dss dir을 dbgen dir로 이동 후, dbgen/queries dir을 dbgen/dss/로 이동
git clone https://github.com/tvondra/pg_tpch.git

cp -r ~/pg_tpch/dss ~/tpch/dbgen/
cp -r ~/tpch/dbgen/queries ~/tpch/dbgen/dss/

for q in `seq 1 22`
do
    DSS_QUERY=dss/templates ./qgen $q >> dss/queries/$q.sql
    sed 's/^select/explain select/' dss/queries/$q.sql > dss/queries/$q.explain.sql
    cat dss/queries/$q.sql >> dss/queries/$q.explain.sql;
done
  • 이것을 완료하면 1.sql 1.explain.sql 2.sql … 등등의 파일이 생성되는데, 파일을 열어보면 ^M (아스키 코드 13번 CR)이 뒤에 다 붙어있다.
  • 이것을 한번에 제거하기 위해, 다음 스크립트를 수행한다.
#!/bin/bash

for dir in $(ls *.sql);
do
  echo "$dir";
  sed -i s/^M//g $dir  # ^M은 Control + v + m 으로 입력 가능
done
  • dss 디렉토리의 tpch-load.sql의 COPY script 내용 중 파일 경로 부분을 csv 파일이 있는 절대경로로 수정한다.
  • 마지막으로, dss 디렉토리의 스크립트를 다음 순서로 실행시킨다.
    1. tpch-load.sql
    2. tpch-pkeys.sql
    3. tpch-alter.sql
    4. tpch-index.sql
    • psql 에서 SQL 파일을 실행하는 방법 : \i [실행하고자 하는 파일명]
  • 임시 데이터를 다른 저장장치에 저장하고 싶으면, database 경로의 base dir 안의 pgsql_tmp dir에 장치를 mount 해서 사용하면 된다.

 

저작자표시 비영리 변경금지 (새창열림)

'Database > PostgreSQL' 카테고리의 다른 글

PostgreSQL 9.3.4 설치 및 초기화  (0) 2023.01.09
[Optimizer] Correlation of PostgreSQL  (0) 2021.03.08
[Optimizer] PostgreSQL Optimizer의 Stuctures  (0) 2018.05.25
    'Database/PostgreSQL' 카테고리의 다른 글
    • PostgreSQL 9.3.4 설치 및 초기화
    • [Optimizer] Correlation of PostgreSQL
    • [Optimizer] PostgreSQL Optimizer의 Stuctures
    컴라면
    컴라면

    티스토리툴바