PostgreSQL
Single View는 실시간으로 특정 하나의 데이터베이스에 대해 다양한 관점에서 성능 상태를 확인할 수 있습니다.
- CPU 및 Connection 정보를 확인합니다.
- Slow Query를 분석합니다.
- 데이터베이스 성능 지표의 Trend를 확인합니다.
- 최근 10분 동안 급증한 SQL, Event 지표를 확인합니다.
- Table/Index Scan 비율을 확인합니다.
- 사용자 Alert, Vacuum, Replication, Checkpoint 등 주요 관리 포인트를 확인합니다.
- Temp, Tablespace Size, 변경된 Parameter, 통계정보 등 추가 관리 포인트를 확인합니다.


| 순번 | 항목 | 내용 | 비고 |
|---|---|---|---|
| 1 | Grouping Summary | 데이터베이스 지표, Event통계, SQL 실행 정보, Object scan type별 집계 등 다양한 관점의 집계된 데이터를 통해 장애 원인을 추적할 수 있습니다. | [고정 영역] 헤더 > Database 선택과 관계 없이 인스턴스 레벨의 데이터를 표현합니다. Instance 레벨의 수집 지표 하위 Database 지표의 합산 값 |
| Overview | 데이터베이스 전체 Connection에 대한 사용 패턴과 각 사용 상태에 대한 Backends 정보, CPU, Memory사용률을 제공합니다. | ||
| 2 | Real Time Monitor | 데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링을 할 수 있습니다. 기본적으로 4개의 주요 성능 지표에 대해 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능 지표로 변경 및 확장이 가능합니다. | [가변 영역] 헤더에서 선택한 Database에 대한 데이터를 표현합니다. |
| 3 | Session Tab | Single View 화면 하단 Session Tab 버튼을 클릭하면 슬라이드 아웃 형태로 Backend 목록을 확인할 수 있습니다. Overview나 Trend Chart를 통해 데이터베이스의 비정상적인 상태를 인지했을 때, Session Tab에서 현재 SQL을 실행하고 있는 Active Backends, Lock Backends 정보를 확인하여 원인이 되는 Backends를 찾을 수 있고, 필요하다면 강제로 종료할 수 있습니다. | |
| 4 | Database SelectBox | Instance 내 포함된 Database 중 Real Time Monitor, Session Tab 영역에 표현할 Database 타겟을 선택합니다. | - |
[고정 영역] - Instance 레벨의 지표, 각 Database 레벨 지표의 합산 값
Grouping Summary
데이터베이스 지표, Event통계, SQL 실행 정보, Object scan type별 집계 등 다양한 관점의 집계된 데이터를 통해 장애 원인을 추적할 수 있습니다.
1) Statistics & Event Overview나 Trend 항목에서 비정상적인 상황을 인지했을 때, Statistics & Events 항목에서 최근 급증한 데이터베이스 지표를 확인하여 원인을 추적할 수 있습니다.
Statistics: PostgreSQL에서 제공하는 성능지표 Event: PostgreSQL에서 제공하는 대기 관련지표
1-1) Top Diff Statistics(Sum) for 10 min
최근 10분 데이터를 비교하여 변화량을 기준으로 비율이 가장 높은 지표 Top 5를 보여줍니다. 지표명/변동 비율/변동값 순으로 정보를 확인할 수 있습니다.
Statistics row 클릭 시 성능지표의 30분 이전부터 현재 시간까지의 1분 Summary max, avg 값을 팝업 차트로 볼 수 있습니다.

1-2) Top Event for 10 min
최근 10분 Session 수집 데이터에서 발생한 Wait Event 발생 횟수를 기준으로 Top 5를 보여줍니다. 순위/Event 명/Event 발생 횟수/Event 발생 변동 횟수 순으로 정보를 확인할 수 있습니다.

2) SQL & Function
최근 10분 데이터를 비교하여 기본 실행 횟수의 변화량을 기준으로 Top SQL과 Top Function을 확인할 수 있습니다.

2-1) Top SQL for 10 min Order By Calls
Pg_stat_statements를 통해 수집된 데이터 중 최근 10분 동안의 call수 변화량을 기준으로 변화량이 큰 Query Top 5를 보여줍니다. 순위/SQL ID/SQL 호출 횟수/SQL 호출 변동 횟수 순으로 정보를 확인할 수 있습니다. Calls를 클릭 시 정렬 조건을 변경할 수 있고, 정렬 조건에 따라 데이터가 변경됩니다.

Note. pg_stat_statements extension 설정이 필요합니다. Top SQL 정렬 기준: Calls, Total Time, Shared Blks Read, Local Blks Read, Temp Blks Read
Top SQL row 클릭 시 해당 SQL 정보를 확인할 수 있는 ‘SQL Detail’ 팝업창으로 연계됩니다.

2-2) Top Function for 10 min Order By Calls
최근 10분 동안 정렬 조건 기준으로 변화량이 큰 Function을 보여줍니다. Schema Name.Function Name/Function 호출 횟수/Function 호출 변동 횟수 정보를 확인할 수 있습니다. Calls를 클릭 시 정렬 조건을 변경할 수 있고, 정렬 조건에 따라 데이터가 변경됩니다.

Note. track_functions설정이 필요합니다. Top Function 정렬 기준: Calls, Total Time, Self Time
Top Function row 클릭 시 해당 Function ID 정보를 확인할 수 있는 ‘Function Detail’ 팝업창으로 연계됩니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Function ID | Function ID |
| 2 | Database Name | Database 이름 |
| 3 | Schema Name | Schema 이름 |
| 4 | Function Name | Function 이름 |
| 5 | Calls | Function이 호출된 횟수 |
| 6 | Total Time (sec) | Function에서 소요된 총 시간 (이 Function에서 호출한 Function에 소요된 시간을 포함) |
| 7 | Self Time (sec) | Function에서 소요된 총 시간 (이 Function에서 호출한 Function에 소요된 시간을 제외) |
| 8 | Function Scr View | Function 코드 |
3) Object Object Scan Type과 Scan 횟수를 확인할 수 있습니다.
3-1) Index Scan vs. Table Scan
Table, Index Scan 비율을 확인하여 성능 저하를 유발하는 Object 정보를 확인할 수 있습니다.

GaugeChart를 클릭 시 Object 정보를 확인할 수 있는 ‘Top 10 Object List’ 팝업창으로 연계됩니다. ‘Top 10 Object List’ 팝업을 통해 Table Full Scan 비율이 높은 Object를 확인할 수 있습니다. 우측 상단에서 정렬 조건을 변경할 수 있습니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Database Name | Database 이름 |
| 3 | Schema Name | Schema 이름 |
| 4 | Object Name | Object 이름 |
| 5 | Object Type | Object Type |
| 6 | Total Size | 총 Block 크기 |
| 7 | Diff Size | 10분 동안의 Block 크기 변화량 |
| 8 | Scan Ratio | 10분 동안의 Object 스캔 비율 |
3-2) Top Object for 10min Order By Scan
최근 10분간 Table, Index Scan 변화량이 큰 Object Top 5를 보여줍니다.
Object row를 클릭 시 ‘Top 10 Object List’ 팝업창으로 연계됩니다. 해당 팝업을 통해 Scan Count가 높은 Object를 확인할 수 있습니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Database Name | Database 이름 |
| 3 | Schema Name | Schema 이름 |
| 4 | Object Name | Object 이름 |
| 5 | Object Type | Object Type |
| 6 | Total Size | 총 Block 크기 |
| 7 | Diff Size | 10분 동안의 Block 크기 변화량 |
| 8 | Scan Count | 10분 동안의 Object 스캔 수 |
4) Trend Summary
최근 데이터를 Summary해서 분석된 정보를 제공합니다. 해당 영역을 통해 지표의 추이가 고르게 분포되어 있는지, 평소와는 다른 패턴으로 사용된 지표가 있는지 등을 판단하여 전반적인 서버의 상태를 확인할 수 있습니다.

막대 그래프 클릭 시 해당 지표의 30분 동안의 추이를 확인할 수 있습니다.

클릭 시 원하는 지표로 변경할 수 있습니다.

Overview
1) Connection View
Connection View를 통해 데이터베이스의 전체 Backends가 어떻게 사용되고 있는지 사용 비율을 표현한 벌집 뷰의 색 변화를 통해 데이터베이스의 상태를 한눈에 파악할 수 있습니다. 또한 max_connection 대비 Backends가 얼마나 사용 중인지 확인할 수 있습니다.

Note. Long 상태의 Connection은 노란색, Lock 상태의 Connection은 빨간색으로 표시됩니다.
2) Core
Alert, Vacuum, Replication, Check point 등 4가지의 인프라 관련 주요 관리 포인트를 표시합니다.

| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Alert | 현재 Alert 이 발생하고 있는 알람 발생 카운트를 표시합니다. 해당 영역을 클릭하면 Alert 발생 정보를 확인할 수 있는 Admin Reference 영역의 Alert Logs 항목이 펼쳐집니다. |
| 2 | Vacuum | Age 상태 정보를표시합니다. Age 사용 비율을 통해 Vacuum 수행 여부를 판단할 수 있습니다. 해당 영역을 클릭하면 Age 사용이 높은 Object를 확인할 수 있는 ‘Top 10 Object List’ 팝업창으로 연계됩니다. |
| 3 | Replication | Replication으로 구성된 서버의 Primary, Standby 간 Log 파일과시간 차이를 표시합니다. 차이가 많이 나는 경우 네트워크, SQL, 설정 등 지연의 원인을 파악해야 합니다. |
| 4 | Checkpoint | Backends에서 직접 쓴 Buffer 수의 비율, Checkpoint Buffer 크기및 Checkpoint 처리 소요 시간을 표시합니다. Checkpoint 주기가 적절한지 확인할 수 있습니다. 해당 영역을 클릭하면 Block Write Time이 긴 SQL을 확인할 수 있는 ‘Top 10 SQL Order by Block Write Time[delta]’ 팝업창으로 연계됩니다. |
Admin Reference
Vacuum, Temp, Tablespace size, Changed parameter 등 주요 관리 포인트를 표시합니다.
1) Vacuum Vacuum과 관련된 Dead Tuple Object 정보와 Vacuum을 수행중인 Backend 소요시간을 확인할 수 있습니다.
1-1) Top Dead Tuple for Object
Dead Tuple Ratio가 높은 순으로 Object를 확인할 수 있습니다. Dead Tuple 비율이 높고 Size가 큰 Object는 Vacuum 작업을 통해 Size를 확보해야 합니다.
해당 영역을 클릭하면 Dead Tuple Ratio가 높은 Object를 확인할 수 있는 ‘Top Object List’ 팝업창으로 연계됩니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Database Name | Database 이름 |
| 3 | Schema Name | Schema 이름 |
| 4 | Object Name | Object 이름 |
| 5 | Object Type | Object Type |
| 6 | Total Size | 총 Block 크기 |
| 7 | Diff Size | 10분 동안의 Block 크기 변화량 |
| 8 | Dead Tuple | 10분 동안의 Dead Tuple 수 변화량 |
| 9 | Dead Tuple Ratio | 10분 동안의 Dead Tuple 수 변화량 비율 |
Note. Object 정렬 기준: Dead Tuple, Scan Count, Scan Ratio, Age, Analyze Time
1-2) Top Vacuuming Process(sec)
Vacuum을 오래 수행하고 있는 Top 5 Active Backend를 확인할 수 있습니다.
해당 영역을 클릭하면 Vacuum을 오래 수행하고 있는 Active Backend 정보를 확인할 수 있는 ‘Vacuuming Backends’ 팝업창으로 연계됩니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | PID | Backend 프로세스 ID |
| 2 | User Name | Backend에 로그인한 사용자 이름 |
| 3 | Database Name | Backend에 연결된 Database 이름 |
| 4 | App Name | Backend에 연결된 애플리케이션 이름 |
| 5 | Client Address | Backend에 연결된 클라이언트 IP주소 (이 필드가 null이면 클라이언트가 서버 시스템의 unix 소켓을 통해 연결되었거나 이것이 autovacuum과 같은 내부 프로세스임을 나타냅니다.) |
| 6 | Client Host Name | Backend에 연결된 클라이언트의 호스트 이름 |
| 7 | Backend Start | Backend 시작 시간 |
| 8 | Elapsed Time (sec) | 수행 시간 (초) |
| 9 | SQL Text | 수행 쿼리 |
| 10 | Wait Event | Backend가 현재 대기 중인 경우 대기 이벤트 이름 (없으면 null) |
| 11 | Wait Event Type | Backend가 대기 중인 이벤트 유형 (없으면 null) |
| 12 | State | Backend의 현재 상태 |
| 13 | Xact Start | Backend 트랜잭션이 시작된 시간 (트랜잭션이 없으면 null) |
| 14 | Query Start | 쿼리가 시작된 시간 (비활성화 상태인 경우 마지막 쿼리가 시작된 시간) |
| 15 | State Change | State가 마지막으로 변경된 시간 |
2) Additional Information Temp의 현재 사용량, 파라미터 변경사항, 테이블스페이스 크기, Object 통계정보 등을 확인할 수 있습니다.
2-1) Temp bytes
Temp의 현재 사용량을 확인합니다. 대용량 데이터를 정렬하는 쿼리가 수행될 경우 Temp 사용량이 증가할 수 있습니다.
해당 영역을 클릭하면 Temp 사용량이 높은 SQL을 확인할 수 있는 ‘Top 10 SQL Order by Temp Blocks Written’ 팝업창으로 연계됩니다. SQL ID를 클릭할 경우 자세한 정보를 확인할 수 있는 SQL Detail 창으로 연계됩니다.

- Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | User Name | SQL의 User 이름 |
| 3 | Database Name | SQL이 실행된 Database 이름 |
| 4 | Query ID | Query ID |
| 5 | SQL Text | SQL의 Text |
| 6 | Calls | 10분 동안의 SQL 수행 횟수 |
| 7 | Temp Blocks Written | 10분 동안의 작성된 Temp 블록 수 |
2-2) Parameter Changed
2시간 이내에 변경된 파라미터를 표시합니다.
클릭 시 ‘Parameter Changed’ 팝업창으로 연계됩니다. 변경된 파라미터의 변경 전, 변경 후, 변경된 정보를 수집한 시간 값을 확인할 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Name | 파라미터 명 |
| 2 | Before Value | 변경 전 값 |
| 3 | After Value | 변경 후 값 |
| 4 | Time | exemONE에서 수집한 시간 |
2-3) Top Tablespace Size
Tablespace 별 크기를 확인할 수 있습니다.

해당 영역을 클릭하면 ‘Top 10 Object List Order by Tablespace Size’ 팝업으로 연계됩니다. 지난 10분간 수집한 Total Size or Diff Size가 큰 Object Top 10을 보여줍니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Database Name | Database 이름 |
| 3 | Schema Name | Schema 이름 |
| 4 | Object Name | Object 이름 |
| 5 | Object Type | Object 유형(Table, Index) |
| 6 | Total Size | Object 총 크기 |
| 7 | Diff Size | 10분 동안의 Object 총 크기 변화량 |
2-4) Old Statistics Objects
통계정보가 오래된 Object를 확인할 수 있습니다.

클릭 시 ‘Latest Statistics Objects’ 팝업으로 연계됩니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Database Name | Database 이름 |
| 2 | Object Name | Object 이름 |
| 2 | Type | Object 유형(Table, Index) |
| 3 | Last Analyze Time | Autovacuum 데몬이 시작한 마지막 분석 시간 |
더블 클릭 시 ‘Top 10 Object List’ 팝업창으로 연계되어 분석시간이 오래된 Object 목록을 확인할 수 있습니다.
● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Database Name | Database 이름 |
| 3 | Schema Name | Schema 이름 |
| 4 | Object Name | Object 이름 |
| 5 | Object Type | Object 유형(Table, Index) |
| 6 | Total Size | 총 Block 크기 |
| 7 | Diff Size | 10분 동안의 Block 크기 변화량 |
| 8 | Last Analyze | 사용자가 시작한 마지막 분석 시간 |
| 9 | Last Auto Analyze | Autovacuum데몬이 시작한 마지막 분석 시간 |
3) Alert Logs
사용자가 설정한 Alert의 발생 이력을 확인합니다.

Rule Name 클릭 시 2.2.2. Alert Detail Slide로 연계되어 자세한 Alert 발생 정보를 확인할 수 있습니다.

[가변 영역] - 헤더에서 선택한 Database에 대한 데이터 표현
Real Time Monitor
1) Slow Query
SQL의 수행시간을 Scatter 차트로 확인할 수 있습니다.
드래그 시 해당 영역에 실행된 SQL Elapsed List를 확인할 수 있습니다. PID 클릭 시 Session Detail로 연계되며, SQL Text 클릭 시 SQL Full Text 팝업창이 연계됩니다.

- Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | PID | Backend 프로세스 ID |
| 2 | User Name | Backend에 로그인한 사용자 이름 |
| 3 | Database Name | Backend에 연결된 Database 이름 |
| 4 | App Name | Backend에 연결된 애플리케이션 이름 |
| 5 | Client Address | Backend에 연결된 클라이언트 IP 주소 |
| 6 | Client Host Name | Backend에 연결된 클라이언트 호스트 이름 |
| 7 | Elapsed Time (sec) | SQL 수행 시간 |
| 8 | SQL Text | SQL의 Text |
2) Trend Chart
데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링 화면을 제공합니다. 기본적으로 4개의 주요 성능 지표에 대한 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능지표로 변경 및 확장이 가능합니다. (상세 내용은 11-2) Trend Chart 참고)

Session Tab
1) Active Backends
현재 실행중인 Backends 목록을 확인할 수 있습니다.

- Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | PID | Backend Process ID |
| 2 | User Name | 사용자 이름 |
| 3 | Database Name | Database 이름 |
| 4 | App Name | APP 이름 |
| 5 | Client Address | Client 주소 |
| 6 | Client Host Name | Client 호스트명 |
| 7 | Backend Start | Backends start Time |
| 8 | Elapsed Time (sec) | SQL 수행시간 |
| 9 | SQL ID | SQL ID |
| 10 | Query ID | Query ID |
| 11 | SQL Text | 접속한 PID에서 수행한 SQL |
| 12 | Wait Event | Backend가 SQL 수행 중 대기한 Event |
| 13 | Wait Event Type | Backend가 SQL 수행 중 대기한 Event 유형 |
| 14 | State | Backend 상태 |
| 15 | Xact Start | Backend 트랜잭션 시작 Time |
| 16 | Query Start | Backend Query 수행 시작 Time |
| 17 | State Change | State가 변경된 Time |
2) Lock Tree
현재 Lock 상태의 Backends 목록을 확인할 수 있습니다.

- Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Database Name | Database 이름 |
| 2 | PID | Backend Process ID |
| 3 | Lock Status | Lock 상태 (Holder / Waiter) |
| 4 | Holder PID | Holder Session의 PID |
| 5 | User Name | 사용자 이름 |
| 6 | SQL Text | 수행된 SQL Text (클릭 시 SQL 전체 텍스트 팝업 오픈) |
| 7 | Query Start | Query 수행 시작 시간 |
| 8 | Collect Time | Lock 정보가 수집된 시간 |