본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

sqlbench

0

sqlbench는 PostgreSQL 데이터베이스의 SQL 쿼리 실행 시간을 측정하고 비교하는 Go 기반 명령줄 도구입니다.

명령줄 도구벤치마크성능 테스트

소개

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 지원을 위한 커뮤니티 기여를 기다려야 합니다. 또한, 측정 정확도를 높이려면 백그라운드 프로세스 최소화 및 동일한 환경에서 반복 테스트를 권장합니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.