exemONE PostgreSQL Database 성능 분석
1. PostgreSQL 성능 분석 메뉴 구성
| 메뉴 카테고리 | 서브 메뉴 | 경로 | 최소, 최대 조회 범위 |
|---|---|---|---|
| SQL Analysis | Top N Analysis | Performance Analysis > Database > PostgreSQL > SQL Analysis > Top N Analysis | 최소 30분, 최대 32일 |
| SQL Analysis | Search SQL | Performance Analysis > Database > PostgreSQL > SQL Analysis > Search SQL | 최소 1일, 최대 32일 |
| Session Analysis | Search Session | Performance Analysis > Database > PostgreSQL > Session Analysis > Search Session | 최소 1초, 최대 1일 |
| Performance Analysis | Trend Analysis | Performance Analysis > Database > PostgreSQL > Performance Analysis > Trend Analysis | 최소 1일, 최대 90일 |
| History Analysis | Parameter History | Performance Analysis > Database > PostgreSQL > Parameter History | toTime = Base Date, fromTime = Compare Date, 시분초 사용 불가 |
| Dataspace Analysis | Object Size | Performance Analysis > Database > PostgreSQL > Dataspace Analysis > Object Size | 최소 1일, 최대 32일 |
2. SQL Analysis
2-1. Top N Analysis
개요: Stacked Area Chart를 활용하여 특정 기간 동안의 Top SQL을 조회하는 기능입니다.
기본 뷰 화면 구성:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Search Panel | 버튼 클릭 시 Search Panel을 표시합니다. |
| 2 | Search Result | Search Panel에서 선택한 조건을 상단에 텍스트로 표시합니다. |
| 3 | Chart | 검색 조건에 따른 일자별 Trend Chart(Stacked Area)를 보여줍니다. |
| 4 | Top-5 User | Group By = User 선택 시 상위 5건을 보여줍니다. |
| 5 | Top-N SQL | Group By 조건에 따라 상위 SQL 목록을 보여줍니다. |
Search Panel 항목:

| 항목 | 설명 |
|---|---|
| Reset | 검색 조건을 초기화합니다. |
| Instance | 인스턴스를 선택합니다. |
| Time | 기간 버튼 및 달력 UI를 이용하여 조회 기간 및 시간을 설정합니다. 최소 30분, 최대 32일 |
| Group By | Query ID (Default) / User / Database 중 선택합니다. |
| Order By | Total Time (Default) / Shared Blks Hit / Call / Shared Blks Read / Temp Read / Disk Blks Written 중 선택합니다. |
| Top | 최소 1, 최대 300 |
Top-N SQL Grid 항목:

| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| Database Name | 쿼리가 실행된 데이터베이스 |
| User Name | 쿼리를 실행한 사용자 이름 |
| SQL ID | SQL ID (클릭 시 SQL Detail Slide 오픈) |
| Query | 쿼리 텍스트 |
| Calls | 실행 횟수 변화량 |
| Shared Blks Hit | shared block 캐시 hit 수 변화량 |
| Shared Blks Hit (Avg) | shared block 캐시 hit 수 평균 변화량 (Shared Blks Hit / Calls) |
| Shared Blks Read | 읽은 총 shared block 수 변화량 |
| Shared Blks Read (Avg) | 읽은 총 shared block 수 평균 변화량 |
| Temp Read | 읽은 총 임시 테이블, 파일 수 변화량 (local_blks_read + temp_blks_read) |
| Temp Read (Avg) | 임시 테이블과 파일 수 평균 변화량 (Temp Read / Calls) |
| Disk Blks Written | 쓴 disk block 수 변화량 (Shared + Local + Temp Blks Written) |
| Total Time (sec) | 명령문 실행에 소요된 총 시간 (초) |
| Mean Time (sec) | 명령문 실행에 소요된 평균 시간 (초) |
| Max Time (sec) | 명령문 실행에 소요된 최대 시간 (초) |
| Max Time Delta | 명령문 실행에 소요된 최대 시간 변화량 (초) |
| Ratio (%) | 명령문 실행에 소요된 총 시간 비율 (%) |
Top-5 User Grid 항목 (Group By = User 선택 시):
| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| User Name | 쿼리를 실행한 사용자 이름 |
| Calls | 실행 횟수 변화량 |
| Shared Blks Hit | shared block 캐시 hit 수 변화량 |
| Shared Blks Read | 읽은 총 shared block 수 변화량 |
| Temp Read | 읽은 임시 테이블, 파일 수 변화량 |
| Total Time (sec) | 실행에 소요된 총 시간 |
| Disk Blks Written | 쓴 disk block 수 변화량 |
| Calls (%) | 사용자가 실행한 쿼리의 Calls 비율 |
| Total Time (%) | 사용자가 실행한 쿼리의 Total Time 비율 |
2-2. Search SQL
개요: 조건을 지정하여 과거 수행된 SQL을 검색·조회하는 기능입니다.
3. Session Analysis
3-1. Search Session
개요: 조건 입력을 통해 사용자가 원하는 세션 값을 제공하며, 5초 단위로 세션 정보를 필터링하여 특정 시점의 세션 성능 문제를 분석하는 화면입니다.
기본 뷰 화면 구성:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Search Panel | 버튼 클릭 시 Search Panel을 표시합니다. |
| 2 | Search Result | Search Panel에서 선택한 조건을 상단에 텍스트로 표시합니다. |
| 3 | Search Session List | 조회 조건에 맞는 데이터가 Grid 형식으로 표현됩니다. |
Search Panel 상세:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Reset | 검색 조건을 초기화합니다. |
| 2 | Instance | 인스턴스를 선택합니다. |
| 3 | Time | 기간 버튼 및 달력 UI를 이용하여 조회 기간 및 시간을 설정합니다. Yesterday: 조회 기간을 어제로 설정 / Today: 조회 일자를 오늘로 설정. 최소 1초, 최대 1일 |
| 4 | Filters | 검색 조건을 입력합니다. (PID, User Name, Database Name, App Name, Client Address, SQL Text, Wait Event, Wait Event Type, Query Start) |
Grid 항목:
| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Time | Backend Session이 수집된 시간 |
| 2 | PID | Backend Process ID |
| 3 | User Name | 사용자 이름 |
| 4 | Database Name | 데이터베이스 이름 |
| 5 | App Name | APP 이름 |
| 6 | Client Address | Client 주소 |
| 7 | Client Host Name | Client Host 이름 |
| 8 | Backend Start | Backend Process가 시작된 시간 |
| 9 | SQL ID(Query ID) | SQL ID (클릭 시 SQL Detail Slide 오픈) |
| 10 | Elapsed Time (sec) | SQL 실행시간 |
| 11 | SQL Text | SQL Text |
| 12 | Wait Event | Backend Process가 대기한 이벤트 |
| 13 | Wait Event Type | Backend Process가 대기한 이벤트 유형 |
| 14 | State | Backend Process 상태 |
| 15 | Xact Start | 트랜잭션 시작 시간 |
| 16 | Query Start | Query 시작 시간 |
| 17 | State Change | 상태가 변경된 시간 |
4. Performance Analysis
4-1. Trend Analysis
기본 뷰 화면 구성:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Search Panel | 버튼 클릭 시 Search Panel을 표시합니다. |
| 2 | Search Result | Search Panel에서 선택한 조건을 상단에 텍스트로 표시합니다. |
| 3 | Trend Chart | 데이터베이스 주요 지표 Trend를 표시하며 주요 성능 지표에 대한 모니터링이 가능합니다. |
| 4 | Grid | Chart에서 클릭 시점에 수집된 Backends, Lock Tree, Top SQL, Scan Ratio, Top Object, Top Event, Long Active Backends, Application Ratio, User Ratio, Alert 정보를 보여줍니다. |
Search Panel 항목:

| 항목 | 설명 |
|---|---|
| Reset | 검색 조건을 초기화합니다. |
| Instance | 인스턴스를 선택합니다. |
| Time | 기간 버튼 및 달력 UI를 이용하여 조회 기간 및 시간을 설정합니다. 최소 1일, 최대 90일 |
Trend Chart:

| 항목 | 설명 |
|---|---|
| Chart | 조회 대상, 기간에 맞춰 차트를 표시합니다. 마우스 오버 시 Indicator 및 Tooltip 표시 |
| Stat Change | 각 차트 명 우측 상단 아이콘을 클릭하여 지표를 변경합니다. |
Grid 하위 탭 구성:
1) Backends Tab
클릭 시점에 수집된 Backends 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| PID | Backend Process ID |
| Username | 사용자 이름 |
| Database Name | 데이터베이스 이름 |
| App Name | APP 이름 |
| Client Address | Client 주소 |
| Client Host Name | Client Host 이름 |
| Backend Start | Backend Process가 시작된 시간 |
| Elapsed Time (sec) | SQL 실행시간 |
| SQL Text | SQL Text |
| Wait Event | Backend Process가 대기한 이벤트 |
| Wait Event Type | Backend Process가 대기한 이벤트 유형 |
| State | Backend Process 상태 |
| Xact Start | 트랜잭션 시작 시간 |
| Query Start | Query 시작 시간 |
| State Change | 상태가 변경된 시간 |
2) Lock Tree Tab
클릭 시점에 수집된 Lock Tree 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Collect Time | Backend Process가 수집된 시간 |
| PID | Backend 프로세스 ID |
| Lock Status | Lock 상태 |
| Holder PID | Holder의 PID |
| User Name | 사용자 이름 |
| Database Name | 데이터베이스 이름 |
| Statement | 수행 쿼리 |
| Elapsed Time (sec) | SQL 실행시간(초) |
| Query Start | 쿼리가 시작된 시간 (비활성화 상태인 경우 마지막 쿼리가 시작된 시간) |
3) Top SQL Tab
드래그한 조회 기간의 Top SQL 정보를 확인합니다.

Order By 조건: Calls / Mean Time / Shared Blks Hit / Shared Blks Read / Total Execution Time / Disk Blks Written
| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| SQL ID | SQL ID |
| User Name | 사용자 이름 |
| Database Name | 데이터베이스 이름 |
| Query | 수행 쿼리 |
| Calls | 실행 횟수 |
| Shared Blks Hit | 메모리에서 읽은 총 shared block 수 |
| Shared Blks Read | Disk에서 읽은 총 shared block 수 |
| Disk Blks Written | Disk에 쓴 총 block 수 (Shared + Local + Temp Blks Written) |
| Mean Time (sec) | 실행에 소요된 평균 시간 (초) |
| Total Execution Time (sec) | 총 수행시간(초) |
4) Scan Ratio Tab
클릭 시점에 수집된 Scan Ratio 정보를 확인합니다.

Order By 조건: Object Name / Object Type
| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| Database Name | 데이터베이스 이름 |
| Schema Name | 스키마 이름 |
| Object Name | Object 이름 |
| Object Type | Object 유형 |
| Total Size | Object의 총 사이즈 |
| Diff Size | Object의 총 사이즈 변화량 |
| Scan | Object를 full scan한 횟수 |
| Scan Ratio | Index scan 대비 full scan 횟수 비율 |
5) Top Object Tab
클릭 시점에 수집된 Top Object 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| Database Name | 데이터베이스 이름 |
| Object Name | 오브젝트 이름 (클릭 시 오브젝트 디테일 창으로 연계) |
| Object Type | 오브젝트 타입: Table, Index |
| Total Size | 총 사이즈 |
| Diff Size | 사이즈 변화량 |
| Age(Current) | 최근 age |
6) Top Event Tab
클릭 시점에 수집된 Top Event 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| Event Name | Event 이름 |
| Count | Event 발생 횟수 |
| Ratio | Event 발생 비율 |
7) Long Active Backends Tab
클릭 시점에 수집된 Long Active Backends(장기 수행 쿼리) 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| PID | Backend Process ID |
| User Name | 사용자 이름 |
| Database Name | 데이터베이스 이름 |
| Application Name | Application 이름 |
| Query | SQL Text |
| Elapsed Time (sec) | 총 수행시간(초) |
| Query Start Time | Query가 시작된 시간 |
| Query Last Time | Query가 마지막 실행된 시점의 시간 |
8) Application Ratio Tab
클릭 시점에 수집된 Application Ratio 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| Application Name | Application 이름 |
| Count | 해당 application 이름으로 수집된 세션 스냅샷 수 |
| Elapsed Time (sec) | 총 수행시간(초) |
| Elapsed Ratio | 전체 application 총 수행시간 대비 해당 application 총 수행시간 비율 |
9) User Ratio Tab
클릭 시점에 수집된 User Ratio 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Rank | 순위 |
| User Name | 사용자 이름 |
| Count | 해당 user 이름으로 수집된 세션 스냅샷 수 |
| Elapsed Time (sec) | 총 수행시간(초) |
| Elapsed Ratio | 전체 user 총 수행시간 대비 해당 user 총 수행시간 비율 |
10) Alert Tab
클릭 시점에 수집된 Alert 정보를 확인합니다.

| 항목 | 설명 |
|---|---|
| Time | 데이터가 수집된 시간 |
| Alert Type | Alert 유형 |
| Alert Name | Alert 이름 |
| Level | Alert Level |
| Value | Alert 값 |
| Description | Alert 설명 |
5. History Analysis
5-1. Parameter History
메뉴 경로: Performance Analysis > Database > PostgreSQL > Parameter History
개요: 파라미터 조회를 통해 장애 시점과 정상 시점의 파라미터 비교 분석이 가능합니다. 특정 파라미터의 변경 이력 등 상세 히스토리를 확인할 수 있으며, 장애 발생 시 효과적인 분석이 가능합니다.
조회 제한: Base Date(기준 날짜) vs Compare Date(비교 날짜) 비교 방식, 시분초 사용 불가. 동일 날짜 비교 불가
기본 뷰 화면 구성:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Search Panel | 버튼 클릭 시 Search Panel을 표시합니다. |
| 2 | Search Result | Search Panel에서 선택한 조건을 상단에 텍스트로 표시합니다. |
| 3 | Parameter List Search | 파라미터 목록의 Parameter Name 컬럼 기준 검색이 가능합니다. |
| 4 | Parameter List | 기준 날짜와 비교 날짜의 파라미터를 비교했을 때 변경된 파라미터는 파란색(True)으로 표시하여 보여줍니다. |
Search Panel 상세:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Reset | 검색 조건을 초기화합니다. |
| 2 | Instance | 인스턴스를 선택합니다. |
| 3 | Base Date | 파라미터 현황 확인을 위한 기준 날짜를 선택합니다. 선택한 날짜 기준 마지막 시점의 값을 보여줍니다. 당일 날짜 조회 시 현재까지 수집된 데이터 중 마지막 시점의 값이 출력됩니다. |
| 4 | Compare Date | 파라미터 현황 확인을 위한 비교 날짜를 선택합니다. 선택한 날짜 기준 마지막 시점의 값을 보여줍니다. Base Date와 동일한 날짜로 선택하여 비교할 수 없습니다. |
| 5 | Filters | Parameter Name (대소문자 구분 없이 일부 일치 검색 가능) / Different: True(변경된 파라미터만 조회) / False(수집된 모든 파라미터 조회). True, False 체크박스는 모두 기본 선택됩니다. |
Parameter List:

변경된 파라미터는 파란색(True)으로 표시하여 상단에 출력합니다.
Grid 항목:
| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Parameter Name | Parameter 명 (클릭 시 Parameter Detail Slide 오픈) |
| 2 | Base Date | 검색 조건에서 설정한 기준 날짜의 파라미터 값 |
| 3 | Compare Date | 검색 조건에서 설정한 비교 날짜의 파라미터 값 |
| 4 | Different | 기준 날짜 대비 비교 날짜의 값 차이 (False: 변동 없음 / True: 변경됨) |
6. Dataspace Analysis
6-1. Object Size
메뉴 경로: Performance Analysis > Database > PostgreSQL > Dataspace Analysis > Object Size
개요: 데이터베이스, 오브젝트에 대한 사용량을 확인하고 특정 날짜에 대해서 비교 분석이 가능합니다. 특정 오브젝트에 대해 일자별 추이를 확인할 수 있습니다.
조회 제한: 최소 1일, 최대 32일, 시분초 설정 불가
기본 뷰 화면 구성:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Search Panel | 버튼 클릭 시 Search Panel을 표시합니다. |
| 2 | Search Result | Search Panel에서 선택한 조건을 상단에 텍스트로 표시합니다. |
| 3 | Tab | Search Panel 인스턴스 항목에서 선택한 조건에 따라 Database / Object 탭이 나타납니다. |
| 4 | Database Size Trend | 일자별로 Database / Object의 사용량(Used Size) 및 여유 공간(Free Size) 추이를 제공합니다. |
| 5 | Database Size Info | 분석 구간의 처음과 마지막 날짜가 자동으로 선택되며, Database / Object별로 사이즈 추이와 변화량을 제공합니다. |
| 6 | Top-30 Object | 전체 Database / Object 기준으로 Top-30 Object 정보를 출력하며, 우측 상단의 라디오 버튼을 통해 정렬 기준을 선택합니다. |
Search Panel 상세:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Reset | 검색 조건을 초기화합니다. |
| 2 | Instance | 인스턴스와 오브젝트를 선택합니다. Object Name을 All 선택 시 Database 탭만 나타납니다. Object Name을 하나만 선택 시 Database, Object 탭이 모두 나타납니다. |
| 3 | Time | Last Month / Last Week / Yesterday / Today 버튼 및 달력 UI로 조회 기간 설정. 최소 1일, 최대 32일 |
Database Size Trend:

| 항목 | 설명 |
|---|---|
| Database Size Trend | 일자별 Database / Object의 Used Size 및 Free Size 추이 차트 |
| Database 탭 | ![]() |
| Object 탭 | ![]() |
| Date 명칭 (1일 이하) | Start Time / End Time으로 표기 |
| Date 명칭 (2일 이상) | Start Date / End Date로 표기 |
Database Size Info:

| 항목 | 설명 |
|---|---|
| Database 탭 Grid | ![]() |
| Object 탭 Grid | ![]() |
Grid 항목:
| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Database Name | 데이터베이스 이름 |
| 2 | Start Time Size | 조회 기간 중 처음 일자의 Database Size |
| 3 | End Time Size | 조회 기간 중 마지막 일자의 Database Size |
| 4 | Diff Size | 마지막 일자와 처음 일자 간의 Database Size 변화량 (End Size – Start Size) |
Grid에서 특정 행을 클릭하면 Top-30 Object의 값이 변경됩니다.
Top-30 Object:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Radio 버튼 | Start All Size / End All Size / Diff All Size 중 선택하여 정렬 기준 변경 |
Grid 항목:
| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Database Name | 데이터베이스 이름 |
| 3 | Object Name | Object 이름 (클릭 시 Object Detail Slide 오픈) |
| 4 | All Size | Object의 총 Size |
| 5 | Data Size | Object의 Data Size |
| 6 | Index Size | Object의 Index Size |
Object Detail Slide:

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Title | Top-30 Object에서 클릭한 오브젝트의 이름 |
| 2 | Close | 클릭 시 Detail Slide 닫힘 |
| 3 | Object Information | 오브젝트 Value별 차트 (Age(Current), Dead Tuples, Live Tuples, Table/Index Size, Scan Count 등 다양한 지표 선택 가능) |
| 4 | Object History | 오브젝트의 데이터를 1시간 간격으로 표시 |
7. 부가 기능 - Dashboard 위젯 링크 연계
지원 버전: v3.0.508 이상
대시보드 위젯에서 PostgreSQL 성능 분석 화면으로 직접 연계할 수 있습니다.
PostgreSQL PA 연계 URL 목록:
| 화면 | URL | 조회 범위 |
|---|---|---|
| Top N Analysis | /postgresql/topNAnalysis | 최소 20분 / 초 불가 |
| Search SQL | /postgresql/searchSql | 최소 1일 |
| Search Session | /postgresql/searchSession | 최소 1초 |
| Trend Analysis | /postgresql/trendAnalysis | 최소 1일 / 분·초 불가 |
| Parameter History | /postgresql/parameterHistory | toTime = Base Date, fromTime = Compare Date / 시분초 불가 |
| Object Size | /postgresql/objectSize | 최소 1일 / 시분초 불가 |
링크 연결 가능한 위젯:
| 위젯 종류 |
|---|
| 타임시리즈, 이퀄라이저, 스코어보드 |
| 트리 그리드, 상위 리스트 |
| 대상 전용 뷰, 상태(이벤트), 토폴로지, 서버 |
| 카드 |
주의: Series Type이 By인 경우에만 targetId를 알 수 있어 정상 연계가 가능합니다.
8. 주의사항 / 참고
| 항목 | 내용 |
|---|---|
| Parameter History 날짜 설정 | toTime = Base Date(기준 날짜), fromTime = Compare Date(비교 날짜)로 동작합니다. |
| Trend Analysis 조회 제한 | 2일 이상 조회 시 하단 탭(Backends, Lock Tree, Top SQL 등)의 데이터 조회에 제한이 있습니다. |
| 조회 범위 보정 | 최소 조회 범위보다 작은 기간이 입력되면, 최소 범위에 맞게 기간이 자동 보정되어 조회됩니다. |
| Object Size | PostgreSQL은 Oracle의 Tablespace에 해당하는 Object Size 메뉴를 제공합니다. |
참고 문서:



