본문으로 건너뛰기

exemONE PostgreSQL Database 성능 분석 기능 상세 설명

exemONE의 Performance Analysis > Database > PostgreSQL 메뉴에서는 4가지 주요 분석 영역을 제공합니다:

  1. Performance Analysis (성능 분석) - Trend Analysis, Parameter History
  2. SQL Analysis (SQL 분석) - Top-N Analysis, Search SQL
  3. Session Analysis (세션 분석) - Search Session
  4. DataSpace Analysis (데이터 공간 분석) - Object Size

참고: PostgreSQL 개편 버전에서는 조회 기간이 확대되고, Database Name 컬럼이 추가되는 등 기능이 강화되었습니다. 아래에서는 개편 버전 기준으로 설명합니다.


1. Performance Analysis (성능 분석)

1-1. Trend Analysis (트렌드 분석)

참고 문서: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-3168558

날짜별, 시간별 성능 추이 확인이 가능한 화면으로, 특정 시점의 정밀한 성능 분석 기능을 제공합니다.

Search Panel

항목내용
Reset검색 조건을 초기화합니다.
Instance인스턴스를 선택합니다.
Time기간 설정 최대 범위: 90일, 최소 범위: 1일. 2일 이상인 경우 하단 탭 데이터 조회 제한이 있습니다.

Trend Chart

  • Chart: 조회 대상 및 기간에 맞춰 차트를 표시하며, 인디케이터와 날짜/시간 툴팁을 제공합니다.
  • Stat Change: 각 차트명 우측 상단 아이콘 클릭으로 표시할 지표를 변경할 수 있습니다.

하단 Grid (9가지 분석 탭)

하단에는 선택된 시간 범위에서 다양한 관점의 장애 원인을 분석할 수 있습니다.

1) Backends

클릭 시점에 수집된 Backend Process 정보를 확인합니다.

컬럼설명
PIDBackend Process ID
Username사용자 이름
Database Name데이터베이스 이름
App NameAPP 이름
Client AddressClient 주소
Client Host NameClient Host 이름
Backend StartBackend Process 시작 시간
Elapsed Time (sec)SQL 실행시간
SQL TextSQL Text
Wait Event대기한 이벤트
Wait Event Type대기 이벤트 유형
StateBackend Process 상태
Xact Start트랜잭션 시작 시간
Query StartQuery 시작 시간
State Change상태 변경 시간

2) Lock Tree

컬럼설명
Collect Time수집 시간
PIDBackend 프로세스 ID
Lock StatusLock 상태
Holder PIDHolder의 PID
User Name사용자 이름
Database Name데이터베이스 이름
Statement수행 쿼리
Elapsed Time (sec)SQL 실행시간(초)
Query Start쿼리 시작 시간

3) Top SQL

Order By 조건: Calls, Mean Time, Shared Blks Hit, Shared Blks Read, Total Execution Time, Disk Blks Written

컬럼설명
Rank순위
SQL IDSQL ID
User Name사용자 이름
Database Name데이터베이스 이름
Query수행 쿼리
Calls실행 횟수
Shared Blks Hit메모리에서 읽은 총 shared block 수
Shared Blks ReadDisk에서 읽은 총 shared block 수
Disk Blks WrittenDisk에 쓴 총 block 수
Mean Time (sec)실행에 소요된 평균 시간
Total Execution Time (sec)총 수행시간

4) Scan Ratio

컬럼설명
Rank순위
Database Name데이터베이스 이름
Schema Name스키마 이름
Object NameObject 이름
Object TypeObject 유형
Total SizeObject 총 사이즈
Diff Size사이즈 변화량
ScanFull scan 횟수
Scan RatioIndex scan 대비 full scan 비율

5) Top Object

컬럼설명
Rank순위
Database Name데이터베이스 이름
Object Name오브젝트 이름 (클릭 시 디테일 창 연계)
Object Type오브젝트 타입 (Table, Index)
Total Size총 사이즈
Diff Size사이즈 변화량
Age(Current)최근 age

6) Top Event

컬럼설명
Rank순위
Event NameEvent 이름
CountEvent 발생 횟수
RatioEvent 발생 비율

7) Long Active Backends

컬럼설명
Rank순위
PIDBackend Process ID
User Name사용자 이름
Database Name데이터베이스 이름
Application NameApplication 이름
QuerySQL Text
Elapsed Time (sec)총 수행시간
Query Start TimeQuery 시작 시간
Query Last TimeQuery 마지막 실행 시간

8) Application Ratio

컬럼설명
Rank순위
Application NameApplication 이름
Count해당 application으로 수집된 세션 스냅샷 수
Elapsed Time (sec)총 수행시간
Elapsed Ratio전체 대비 해당 application 수행시간 비율

9) User Ratio

컬럼설명
Rank순위
User Name사용자 이름
Count수집된 세션 스냅샷 수
Elapsed Time (sec)총 수행시간
Elapsed Ratio전체 대비 해당 user 수행시간 비율

10) Alert

컬럼설명
Time수집 시간
Alert TypeAlert 유형
Alert NameAlert 이름
LevelAlert Level
ValueAlert 값
DescriptionAlert 설명

1-2. Parameter History (파라미터 히스토리)

참고 문서: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-3168498

파라미터 조회를 통해 장애 시점과 정상 시점의 파라미터 비교 분석이 가능합니다. 특정 파라미터의 변경 이력 등 상세 히스토리를 확인할 수 있으며, 장애 발생 시 효과적인 분석이 가능합니다.

Search Panel

항목내용
Reset검색 조건 초기화
Instance인스턴스 선택
Base Date기준 날짜 선택 (Today 버튼 제공). 선택한 날짜 기준 마지막 시점의 값을 표시
Compare Date비교 날짜 선택 (Yesterday 버튼 제공). Base Date와 동일 날짜 선택 불가
FiltersParameter Name (대소문자 구분 없음, 일부 일치 검색), Different (True/False 체크박스)

Parameter List

Base Date와 Compare Date의 파라미터를 비교했을 때 변경된 파라미터는 파란색(True)으로 표시하여 상단에 출력합니다.

컬럼설명
Parameter NameParameter 명 (클릭 시 Parameter Detail Slide 오픈)
Base Date기준 날짜 값
Compare Date비교 날짜 값
Different값 차이 여부 (False: 변동 없음, True: 변경 됨)

2. SQL Analysis (SQL 분석)

2-1. Top-N Analysis (Top-N 분석)

참고 문서: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-3168538

Stacked Area Chart를 활용하여 특정 기간 동안의 Top SQL을 조회하는 기능을 제공합니다.

Search Panel

항목내용
Instance인스턴스 선택
Time최대 범위: 31일, 최소 범위: 30분
Group ByQuery ID (Default), User, Database
Order ByTotal Time (Default), Shared Blks Hit, Call, Shared Blks Read, Temp Read, Disk Blks Written
Top최소 1, 최대 300

Chart

마우스 오버 시 툴팁과 인디케이터를 보여줍니다.

Top SQL Grid

컬럼설명
Rank순위
Database Name데이터베이스 이름
User Name쿼리를 실행한 사용자 이름
SQL IDSQL ID (클릭 시 SQL Detail Slide 오픈)
Query쿼리 텍스트
Calls실행 횟수 변화량
Shared Blks Hitshared block 캐시 hit 수 변화량
Shared Blks Hit (Avg)shared block 캐시 hit 수 평균 변화량
Shared Blks Read읽은 총 shared block 수 변화량
Shared Blks Read (Avg)읽은 총 shared block 수 평균 변화량
Temp Read임시 테이블/파일 수 변화량
Temp Read (Avg)임시 테이블/파일 수 평균 변화량
Disk Blks Written쓴 disk block 수 변화량
Total Time (sec)총 소요 시간
Mean Time (sec)평균 소요 시간
Max Time (sec)최대 소요 시간
Max Time Delta최대 시간 변화량
Ratio (%)총 시간 비율

Top-5 User (Group By=User 시)

사용자별 Calls, Shared Blks Hit, Shared Blks Read, Temp Read, Total Time, Disk Blks Written 및 각 비율(%)을 제공합니다.

Top Database (Group By=Database 시)

데이터베이스별 동일한 지표와 비율(%)을 제공합니다.


2-2. Search SQL (SQL 검색)

참고 문서: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-3168578

데이터베이스에서 특정 SQL의 통계정보와 과거 수행 이력 등을 확인하는 화면입니다.

Search Panel

항목내용
Instance인스턴스 선택
Time최대 범위: 12일, 최소 범위: 30분
FiltersDatabase Name (일부 일치), SQL ID (전체 일치), Query ID (전체 일치), SQL Text (일부 일치)

Search SQL List

  • Total Time 기준 Top-1 SQL이 자동 선택
  • 우측 상단 토글 버튼으로 합계/평균 전환 가능
컬럼설명
No순번
User Name사용자 이름
Database Name데이터베이스 이름
SQL ID(Query ID)Query ID
SQL TextSQL Text
Calls총 실행 횟수
Total Time (sec)총 수행시간
Shared Blocks Hit (cache hit)메모리에서 읽은 총 shared block 수
Local Blocks Hit (cache hit)메모리에서 읽은 총 temp table/index block 수
Shared Blocks Read (disk read)Disk에서 읽은 총 shared block 수
Local Blocks Read (disk read)Disk에서 읽은 총 temp Table/Index block 수
Temp Blocks Read (disk read)Disk에서 읽은 총 temp block 수
Shared Blocks Written (disk written)Disk에 쓴 총 shared block 수
Local Blocks Written (disk written)Disk에 쓴 총 temp table/index block 수
Temp Blocks Written (disk written)Disk에 쓴 총 temp block 수
Rows출력 또는 영향 받은 row 수
Block Read Time (sec)Block 읽기 총 시간
Block Write Time (sec)Block 쓰기 총 시간
Max Execution Time최대 실행 시간
Min Execution Time최소 실행 시간

Trend

선택한 SQL의 3가지 주요 지표를 차트 형태로 제공합니다:

  • Time: SQL의 Time 추이
  • Blocks: SQL의 Blocks 추이
  • Calls: SQL의 Calls 추이

History

SQL의 시간별 History를 Grid 형태로 제공하며, Calls, Total Time, Shared/Local/Temp Blocks Hit/Read/Written, Rows, Block Read/Write Time, Max/Min Execution Time을 시간별로 확인합니다.

Full Text

  • Formatting: 텍스트 서식 정렬
  • Copy: SQL 전체 텍스트 복사

Plan

컬럼설명
#단위 SELECT 쿼리별 식별자 값
Query Plan통계정보 기반 옵티마이저가 수립하는 작업 절차

3. Session Analysis (세션 분석)

3-1. Search Session (세션 검색)

참고 문서: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-3168478

조건 입력을 통해 사용자가 원하는 세션 값을 제공하며, 5초 단위로 세션 정보를 필터링하여 특정 시점의 세션 성능 문제를 분석하는 화면입니다.

Search Panel

항목내용
Instance인스턴스 선택
Time최대 범위: 1일, 최소 범위: 1초 (Yesterday, Today 버튼 제공)
FiltersPID, User Name, Database Name, App Name, Client Address, SQL Text, Wait Event, Wait Event Type, Query Start

Search Session Grid

컬럼설명
TimeBackend Session 수집 시간
PIDBackend Process ID
User Name사용자 이름
Database Name데이터베이스 이름
App NameAPP 이름
Client AddressClient 주소
Client Host NameClient Host 이름
Backend StartBackend Process 시작 시간
SQL ID(Query ID)SQL ID (클릭 시 SQL Detail Slide 오픈)
Elapsed Time (sec)SQL 실행시간
SQL TextSQL Text
Wait Event대기한 이벤트
Wait Event Type대기 이벤트 유형
StateBackend Process 상태
Xact Start트랜잭션 시작 시간
Query StartQuery 시작 시간
State Change상태 변경 시간

4. DataSpace Analysis (데이터 공간 분석)

4-1. Object Size (오브젝트 사이즈)

참고 문서: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-3168518

데이터베이스, 오브젝트에 대한 사용량을 확인하고 특정 날짜에 대해서 비교 분석이 가능합니다.

Search Panel

항목내용
Instance인스턴스와 오브젝트 선택. Object Name을 All 선택 시 Database 탭만 표시, 개별 선택 시 Database/Object 탭 모두 표시
Time최대 범위: 32일, 최소 범위: 1일 (Last Month, Last Week, Yesterday, Today 버튼 제공)

Database Size Trend

  • 일자별로 Database/Object의 사용량(Used Size)여유 공간(Free Size) 추이를 제공
  • 1일 이하: Start Time / End Time 표시
  • 2일 이상: Start Date / End Date 표시
  • 마우스 오버 시 툴팁과 인디케이터 표시

Database Size Info

컬럼설명
Database Name데이터베이스 이름
Start Time Size조회 기간 처음 일자의 Database Size
End Time Size조회 기간 마지막 일자의 Database Size
Diff SizeSize 변화량 (End Size - Start Size)

Top-30 Object

정렬 기준 (라디오 버튼): Start All Size, End All Size, Diff All Size

컬럼설명
Rank순위
Database Name데이터베이스 이름
Object NameObject 이름 (클릭 시 Object Detail Slide 오픈)
All SizeObject 총 Size
Data SizeObject Data Size
Index SizeObject Index Size

Object Detail Slide

Object Detail Slide에서 확인 가능한 오브젝트 Value 항목:

  • Age(Current) (default), Dead Tuples(Current), Dead Tuple Ratio(Current), Dead Tuples Size(Current), Live Tuples(Current)
  • Insert Tuples, Update Tuples, Delete Tuples
  • Table Size(Current), Index Size(Current)
  • Table Scan Count, Index Scan Count, Table Scan Count Ratio
  • Changed Tuples Since Last Analyze(Current), Tuples Hot Updated
  • Table Blocks Fetched, Index Blocks Fetched, Table Blocks Hit, Index Blocks Hit
  • Table Tuples Read, Index Tuples Read, Table Tuples Fetched, Index Tuples Fetched
  • Object History: 오브젝트 데이터를 1시간 간격으로 표시

기능별 조회 기간 요약

분석 기능최대 조회 기간최소 조회 기간
Trend Analysis90일1일
Parameter History날짜 비교 방식날짜 비교 방식
Top-N Analysis31일30분
Search SQL12일30분
Search Session1일1초
Object Size32일1일

주의사항 및 참고

  • PostgreSQL 성능 분석을 사용하기 위해서는 사전에 DB Agent 설치PostgreSQL 인스턴스 등록이 필요합니다.
  • Top SQL 관련 기능은 PostgreSQL의 pg_stat_statements 확장이 활성화되어 있어야 정상적으로 데이터가 수집됩니다.
  • 개편 버전에서는 기존 버전 대비 Database Name 컬럼이 추가되어 다중 데이터베이스 환경에서의 분석이 용이해졌으며, 조회 기간이 확대(Trend Analysis: 2일 → 90일, Search SQL: 32일 → 12일(최적화), Top-N: 32일 → 31일)되었습니다.
  • Group By 조건에 Database가 추가되어 데이터베이스별 SQL 분석이 가능합니다.