SQLPlanStudio for PG는 PostgreSQL SQL 튜닝 과정을 한 화면에서 이어서 수행하도록 만든 Python·PyQt6 기반 데스크톱 프로그램이다. SQL과 실행계획을 확인하고, 부하가 큰 연산을 찾아 개선 전후를 비교한 뒤, 분석 근거와 개선 내용을 튜닝결과서로 정리한다.
실행계획의 병목을 찾고, 개선 전후의 성능 변화와 분석 근거를 하나의 튜닝 결과서로 정리합니다.
어떤 작업을 돕는가
실행계획 원문만으로 파악하기 어려운 연산 구조와 시간·버퍼 부하를 표와 막대로 보여준다. 개선 전후 SQL·실행계획을 각각 보관하고, 원인과 개선 방법을 해당 원문 줄번호에 연결해 작성할 수 있다.
오브젝트의 테이블·인덱스·컬럼 정보를 조회해 분석 근거로 모으고, 필요한 경우 AI로 SQL 변경안을 제안받거나 원인·개선 문장을 정리한다. 정리한 내용은 Markdown 또는 HTML 튜닝결과서로 내보낸다.
주요 사용자와 활용 장면
•
DBA·튜너: 실행계획 병목 분석, SQL 개선 전후 비교, 튜닝 결과 공유.
•
개발자: 느린 SQL의 접근 경로와 반복 처리 확인, 변경 근거 기록.
•
SQL 학습자: 원문·트리·연산별 지표를 함께 보며 실행계획 구조 이해.
DB에 연결해 실행계획을 가져오는 작업과 이미 확보한 실행계획을 붙여 넣어 분석하는 작업을 모두 지원한다. 로컬 실행계획 분석과 보고서 작성에는 AI 연결이 필요하지 않다.
작업 흐름
1.
SQL과 실행계획을 준비한다. DB에서 조회하거나 실행계획 원문을 붙여 넣는다.
2.
Raw·Parsed·Top Op.에서 부하가 큰 연산을 확인한다.
3.
Set Before로 개선 전 SQL과 실행계획을 등록한다.
4.
SQL을 개선하고 실행계획을 다시 확인한 뒤 Set After로 등록한다.
5.
성능 개선 사유·성능 저하 원인·성능 개선 방법과 참고정보를 정리한다.
6.
Generate Report로 결과서를 검토하고 MD·HTML로 내보낸다.
화면으로 보는 핵심 기능
아래는 실제 프로그램 화면을 캡처한 이미지다. SQL과 실행계획, 성능 수치는 흐름을 설명하기 위한 예시로 실제 DB 측정 결과가 아니다.
부하가 큰 연산 찾기
SQL과 실행계획 원문, Buff·Time 부하 막대 및 Top Op.
SQL과 원문을 함께 보면서 Buff·Time 막대와 Top Op. 순위로 집중할 연산을 찾는다. 선택한 연산의 원문이 강조되어 수치의 출처를 확인할 수 있다.
개선 전후를 근거와 함께 비교하기
Before·After SQL과 실행계획, 시간과 Buffers 비교
Before·After에 보관한 SQL·실행계획을 나란히 확인하고, 각 헤더에서 시간·Buffers를 비교한다. 예시 화면의 1.320 → 0.018초, 10,000 → 125 Buffers는 실제 성능 향상을 주장하는 수치가 아니다.
분석 내용을 결과서로 완성하기
튜닝결과서 HTML Preview와 내보내기 버튼
기본정보와 원인·개선 방법, Before·After 원문 및 참고정보를 결과서로 모은다. HTML Preview에서 검토한 뒤 Markdown 또는 단일 HTML 파일로 내보낸다.
프로그램의 특징
특징 | 제공 내용 |
원문과 구조를 함께 분석 | Raw 원문, Parsed 트리, Top Op. 순위와 선택 연동 |
시간과 버퍼 관점 제공 | 연산별 시간·버퍼 부하 막대, Raw의 Buff·Time 영역 |
개선 전후 자료 보관 | Before·After SQL·실행계획·성능 요약 비교 |
분석 기록 보조 | 규칙 기반 원인 문장 및 SQL 변경 주석 정리 |
선택적 AI 지원 | SQL 변경안 검토, 문장 다듬기, 원인 심층 분석 |
양식 변경 가능 | XML 기반 기본정보 항목·입력 형식·선택 목록 편집 |
공유 가능한 결과물 | 접기·펼치기와 코드 줄번호가 있는 HTML, Markdown 원문 |
현재 지원 범위
분석 대상은 PostgreSQL 텍스트 실행계획이다. JSON·XML·YAML 형식 실행계획과 다른 DBMS의 실행계획은 지원하지 않는다. 현재 AI 제공자 선택은 GPT만 가능하다. 실행 파일 패키징은 아직 수행하지 않았으며 Python 가상환경에서 실행한다.
시간과 버퍼의 연산별 파생 값은 병목 탐색을 위한 참고 지표다. 특히 반복·병렬 실행에서 연산별 시간의 합을 실제 경과 시간과 동일하게 해석하면 안 된다. 상세 정의와 조작 방법은 와 을 참고한다.
이 소개는 현재 구현과 샘플을 이용한 로컬 UI 검증을 기준으로 작성했다. DB 실행과 실제 AI API 응답은 검증하지 않았다. 로컬 기능 확인 34건과 이미지 저장 확인 12건이 통과했으며 실제 DB·AI API 연동은 검증 범위에 포함하지 않았다.



