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