데이터입출력구현
- 프로그래밍 언어와 도구에 대한 이해를 바탕으로 응용소프트웨어 설계, 물리 데이터 저장소 설계와 운영 환경을 고려하여 데이터 조작 프로시저의 성능을 예측
- 업무 분석가에 의해 정의된 요구사항을 기준으로, 성능 측정 도구를 활용하여 데이터 조작 프로시저의 성능을 측정
- 실 데이터를 기반으로 테스트를 수행하여 데이터 조작 프로시저의 성능에 영향을 주는 병목을 파악
APM; Application Performance Management 의 개념
- 애플리케이션 성능 관리
- 시스템의 안정적인 운영을 위한 부하량과 접속자 파악 및 장애 진단 등을 목적으로 하는 성능 모니터링
- Resource 모니터링
- 대상
- CPU
- 메모리
- 네트워크
- 디스크
- 오픈소스
- Nagios
- Zabbix
- Cacti
- 대상
- End to End 모니터링
- 대상
- 애플리케이션 수행 관점
- 비즈니스 트랜잭션 관리 및 최종 사용자
- 오픈소스
- VisualVM
- 제품
- 제니퍼
- 파로스
- 시스마스터
- 대상
- Resource 모니터링
SQL 처리 흐름도
- 구문분석 단계
- SQL문장 사용여부 확인
- 기 사용된 경우 : 구문 분석 작업 수행 불필요
- 처음 사용된 경우 : 구문 분석 작업 필요
- 문법 확인 : 정상적으로 작성된지 확인
- 오브젝트 확인 : 테이블, 뷰 등이 데이터베이스에 존재하는지 확인
- 실행계획 확인 : 옵티마이저는 sql문을 가장 빠르게 데이터를 검색해줄 수 있는 실행 계획을 찾음
- 실행 단계
- 캐시 영역 확인 : 구문 분석이 정상적으로 실행된 후 서버 프로세스가 메모리 영역의 데이터 버퍼 캐시 영역을 검색
- 해당 테이블의 데이터가 다른 사용자의 다른 SQL문에 의해 이미 데이터 버퍼 캐시 영역에 존재하는 지 검색
- 데이터 버퍼 캐시에 존재하는 경우 : 테이블의 해당 데이터 파일로부터 테이블을 읽지 않고 캐시 영역의 데이터를 그대로 추출
- 존재하지 않을 경우 : 정의된 테이블의 해당 데이터 파일로 부터 테이블을 읽어서 데이터 버퍼 캐시 영역에 저장
- SQL 문이 UPDATE, DELETE, INSERT 문의 경우 : 데이터 버퍼 캐시 영역에서 새로운 데이터로 변경, 삭제 또는 입력
- 추출 단계
- 사용자 요청 대응 : 실행 단계가 끝난 후 서버 프로세스가 데이터 버퍼 캐시 영역에서 관련 테이블 데이터를 읽어 사용자가 요청한 클라이언트로 보냄
- SELECT문을 실행하는 경우에만 추출 단계 실행됨
SQL 작성시 고려사항
- 개발자는 SQL문을 적절히 구사할 수 있는 능력이 기본적으로 있어야함
- 사용자가 SQL 작성시, 옵티마이저가 실행계획을 수립한 후 실행되는 일련의 과정을 이해하고 작성하여야 함
- 구문 분석 단계시 옵티마이저가 수립한 실행계획에 따라 엄청난 수행속도 차이가 발생할 수 있음을 이해
- 특정 SQL이 실행될 때 옵티마이저에 의해 수립된 실행계획은 제어하기 어렵지만, 옵티마이저가 비정상적으로 동작된다면, 이를 추적하여 개발자가 원하는 실행계획으로 동작될 수 있도록 조정 필요
- 종합적이고 전략적인 포인트를 SQL에 부여하여 작성하여야 함
SQL 성능 최적화 유틸리티 종류
- TKPROF 도구
- SQL문이 적절히 작성되지 않아 전반적인 처리 효율성이 떨어질 경우 처리 성능의 통계치 정보 파악
- EXPLAIN PLAN 도구
- SQL이 사용하는 엑세스 경로를 파악하기 위해 사용
SQL 성능 개선 순서
- 문제있는 SQL 식별
- 옵티마이저 통계 확인
- 실행 계획 검토
- SQL 문 재구성
- 인덱스 재구성
- 실행 계획 유지 관리