소개
sqlbench는 PostgreSQL 데이터베이스의 SQL 쿼리 실행 시간을 측정하고 비교하는 Go 기반 명령줄 도구입니다. felixge가 개발하고 유지 관리하며, 로컬 개발 환경에서 CPU 집약적인 쿼리 변형을 벤치마크하는 데 주로 사용됩니다. MIT 라이선스로 배포되며, Chocolatey 패키지를 통해 Windows 사용자도 쉽게 설치할 수 있습니다.
상세정보
쿼리 실행 시간 측정
sqlbench는 주어진 SQL 파일 목록을 순차적으로 실행하고, 각 쿼리의 실행 시간을 측정합니다. 기본적으로 EXPLAIN (ANALYZE, TIMING OFF)를 prefix로 붙여 실행 시간을 캡처하며, 평균, 최소, 최대, 표준편차, 중앙값, 백분위수 등을 포함한 통계 정보를 출력합니다.
측정 모드 선택
두 가지 시간 측정 방법을 제공합니다: -m explain (기본값)은 쿼리 계획 시간을 제외하고 실행 시간만 측정하며, -m client 옵션을 사용하면 클라이언트 측 벽시계 시간을 측정하여 네트워크 오버헤드를 포함할 수 있습니다.
베이스라인 비교
-i 옵션으로 이전 측정 결과를 저장한 CSV 파일을 입력하면, 현재 쿼리의 성능을 해당 베이스라인과의 상대적 차이로 비교할 수 있습니다. 이는 버전별 성능 회귀 테스트에 유용합니다.
출력 및 저장 기능
-o 옵션으로 개별 측정 결과를 CSV 파일로 저장할 수 있으며, -s 플래그를 사용하면 silent 모드로 동작하여 종료 시에만 통계를 한 번 출력합니다. -v 옵션은 실행 중인 모든 SQL 쿼리와 PostgreSQL 버전을 상세히 출력합니다.
다운로드·설치 방법
Windows 사용자는 Chocolatey 패키지 관리자를 통해 간단히 설치할 수 있습니다. 관리자 권한으로 PowerShell 또는 CMD를 열고 다음 명령을 실행합니다:
choco install sqlbench
이 명령은 공식 Chocolatey 저장소에서 sqlbench 패키지를 다운로드하고 설치합니다. 설치 후 sqlbench 명령을 바로 사용할 수 있습니다.
소스 코드로부터 직접 설치하려면 Go 1.16 이상이 필요하며, 다음 명령을 사용합니다:
go get -u github.com/felixge/sqlbench
또는 GitHub 릴리스 페이지에서 사전 컴파일된 바이너리를 수동으로 다운로드할 수 있습니다.
기본 사용법/명령어
기본 사용법은 다음과 같습니다:
sqlbench [옵션] <SQL 파일 경로>
주요 옵션은 다음과 같습니다:
-c string: PostgreSQL 연결 URL 또는 DSN (예:postgres://user:secret@localhost:5432/my_db?sslmode=disable). 기본값은postgres:///-m string: 측정 방법 선택 (client또는explain, 기본값:explain)-n int: 지정된 반복 횟수 후 종료 (기본값: -1, 무한 루프)-t float: 지정된 초 후 종료 (기본값: -1)-o string: 개별 측정 결과를 저장할 CSV 파일 경로-i string: 기준이 될 CSV 파일 경로 (베이스라인 비교용)-p: 계획 시간을 측정 포함 (-m explain모드에서만 효과)-s: silent 모드 (종료 시에만 통계 출력)-v: verbose 출력 (쿼리 내용과 PostgreSQL 버전 표시)-version: 버전 정보 출력 후 종료
예를 들어, examples/sum/ 디렉터리의 모든 SQL 파일을 1000번 반복하여 실행하고 결과를 파일에 저장하려면 다음 명령을 사용합니다:
sqlbench -n 1000 -o results.csv examples/sum/*.sql
실시간으로 결과를 보면서 실행하려면 -s 플래그를 제거하고 Ctrl+C로 중단할 수 있습니다.
이런 경우에 유용합니다
개발자가 PostgreSQL에서 동일한 결과를 반환하는 여러 쿼리 변형의 성능을 비교하고 싶을 때 유용합니다. 예를 들어, 윈도우 함수, 재귀 CTE, 수학적 공식 중 어떤 방법이 가장 빠른지 수치적으로 검증할 때 사용합니다. CI/CD 파이프라인에 통합하여 성능 회귀를 자동으로 감지하는 데도 활용할 수 있습니다.
지원 환경·시스템 요구사항
sqlbench는 PostgreSQL 데이터베이스에 연결하여 작동하므로, 사용 중인 PostgreSQL 버전에 맞는 클라이언트 라이브러리가 필요합니다. 현재 공식적으로 지원되는 데이터베이스는 PostgreSQL뿐이며, MySQL 등 다른 DBMS 지원을 위한 풀 리퀘스트를 환영합니다. Windows, macOS, Linux에서 Go 환경을 갖춘 시스템에서 실행할 수 있습니다.
최신 버전·업데이트
현재 버전은 1.1.0.0이며, 자세한 변경 사항은 GitHub 저장소의 릴리스 페이지에서 확인할 수 있습니다. 최근 업데이트에서는 PG 버전 간 벤치마크 비교 기능, 워밍업 단계, 준비된 쿼리 사용 옵션 등이 추가되었습니다.
제한 사항·확인 사항
현재 버전에서는 오직 PostgreSQL만 지원됩니다. 다른 데이터베이스 사용을 위해서는 소스 코드를 수정하거나 MySQL 등 다른 DBMS 지원을 위한 커뮤니티 기여를 기다려야 합니다. 또한, 측정 정확도를 높이려면 백그라운드 프로세스 최소화 및 동일한 환경에서 반복 테스트를 권장합니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


