🥞 BE
home

DB 모니터링

SQL 측면의 모니터링

묵시적 변환
데이터의 형식을 변환해야 할 필요가 없도록 함.
행 단위의 처리
모든 DB는 각 테이블에서 행 단위 처리보다는 세트 단위로 처리 시에 가장 좋은 성능이 나옴.
인덱스
인덱스가 너무 많거나 적을 수도 있지만 인덱스를 비활성화 하는 것은 실수.

인스턴스 / 데이터베이스 측면의 모니터링

I/O 경합
잠긴 객체
대기 통계 분석
매개변수
파일
Redo log가 부족할 경우 → DB 전체 장애가 생김
Redo Log Buffer
DDL 또는 DML 문장에 의해 데이터베이스에 저장된 값 또는 테이더베이스 구조에 변경사항이 생기는 경우 이러한 정보를 놓치지 않고 저장하는 메모리 영역
해당 영역에 저장되는 정보들은 커밋되는 순간 LGWR(Log Writer)에 의해 리두 로그 파일(Redo Log file)로 저장된다. 다시 말해 메모리 영역에 저장된 데이터를 디스크에 쓴다고 보면 된다.
복구를 위해서 중요함.

인프라 측면의 모니터링

CPU
메모리
스토리지 하위 시스템
Network
ASYNC_NETWORK_IO

사용자 / 세션 측면의 모니터링

주요 DB 성능 지표

1.
Memory 용량
캐시를 통해 데이터에 접근하는 것이 디스크를 통해 접근하는 것보다 훨씬 빠름
→ 메모리의 현재 상태를 드러내는 매트리스를 모니터링하는 것이 DB 성능 관리에 유익함.
2.
Cache Hit Ratio (적중율)
3.
페이지 기대 수명
페이지가 메모리에 머문 초 단위 시간
4.
초당 체크포인트 페이지 수
체크포인트 : 버퍼 캐시에서의 데이터가 변경되었으나, 데이터 파일에 적용되지 않은 Dirty 버퍼를 데이터 파일에 write하고, 이에 대한 정보를 컨트롤 파일과 데이터 파일 헤더에 기록하는 일련의 작업
5.
리소스 사용량
6.
행(Row) 수
마지막 SQL문의 영향을 받은 데이터 행(Row) 수
7.
데이터베이스 파일 I/O
8.
잠금 및 블록 (Locks and Blocks)
9.
잠금 대기 (Lock waits)
10.
차단 (Blocking)
11.
인덱스

모니터링 툴 결정에서 가장 중요한 요소

호환성
직관성
디자인

상용 모니터링 솔루션

Datadog
Dynatrace

오픈소스 모니터링 솔루션

Prometheus
SENSU
Grafana
MUNIN