오라클 성능 고도화 강의
이전에, 한번 튜닝 수업을 들은 적이 있었지만, 아직 경험이 부족한 상태에서 들어서 그런지 이해가 가지 않는 부분이 많았다. 실무를 조금 해보면서, 어느정도 쿼리에 익숙해진 상태에서 강의를 들으면 어떨까라는 생각이 들어서 강의를 수강하게 되었다.
SQLP 시험에 실패하는 이유
- SQLP 시험에 실패하는 이유는 주로 글로만 학습해서 그렇다.
- SQLP 시험 설계는 실무 전문가임을 인정해주는 자격증이다.
- 따라서 책으로만 학습해서 통과는 어렵고, 실무와 경험을 같이 쌓아야한다.
SQLP 시험에 합격하기 위한 방법
- 정확히 알아야한다.
- 상황에 따라서 답이 달라짐을 알아야한다. (DBMS 버전, 데이터 량, 데이터 분포 등등…)
- 집합적 사고를 할 줄 알아야한다. 이러한 능력은 실무에서 반복을 통해서 체화된다.
- 모델링에 대한 이해가 같이 이루어져야한다. 따라서 모델링도 어느정도는 같이 공부를 해야한다.
SQLP 시험에 합격하기 위한 전략
- 무조건 서술형을 다 맞춰야지 합격이 가능하다. 점수 분포가 서술형에 많은 점수가 있기 때문에 서술형을 다 맞지 않으면 합격이 힘들어진다.
- 서술형을 먼저 풀고, 객관식을 풀고 객관식 중에서 쉬운 문제를 먼저 풀고 어려운 문제는 나중에 푼다.
- 서술형을 답안을 작성할 때, 정확한 진단을 하고 핵심만 간결하게 그리고 절대로 길게 작성하면 안된다.
CHAP 01. 데이터베이스 아키텍처, SQL 처리 과정 및 IO
-
일단 오라클 아키텍처에 대해서, 제대로 알지 못해서 많이 당황스러웠다.
-
REDO로그 및 UNDO 로그에 대해서 자세히 공부를 해야겠다.
-
버퍼 캐시 및, 버퍼 캐시 탐색 과정, 그리고 버퍼 캐시 히트율을 계산하는 방법에 대해서, 공부를 해야겠다.
-
시퀀셜 액세스와 랜덤 액세스의 원리 및
Single Block IO
와Multi Block IO
의 차이에 대해서도 남에게 설명할 수 있을 정도로 공부를 해야겠다. -
오라클 힌트에 대해서 자세히 공부하고 힌트가 적용되지 않는 경우에 내부적으로 쿼리가 변환되는 경우가 있는데, 이러한 경우에 대해서도 들어본 기억은 있는데 확실하게 개념이 잡혀있지는 않았다. 따라서 힌트 관련해서 많은 것을 배워야겠다.
MVCC (Milti Version Concurrency Control)
-
Dirty Read : 다른 트랜잭션이 변경중인 데이터를 읽었는데, 그 트랜잭션이 최종 롤백 됨으로써 비일관성 상태에 놓이는 현상
-
Non-Repetable Read : 한 트랜잭션 내에서 같은 데이터를 두 번 이상 읽을 때, 다른 트랜잭션이 값을 수정 또는 삭제 함으로써 읽은 값들이 서로 달라지는 현상
-
Phantom Read : 한 트랜잭션 내에서, 일정 범위의 데이터를 두 번 이상 읽을 때, 다른 트랜잭션이 새로운 데이터를 추가함으로 인해 첫 번째 읽을 때 없던 데이터가 생기는 현상
-
트랜잭션이 실행 될 때,
UNDO
세그 먼트 헤더에 위치한 트랜잭션 테이블에서 슬롯을 할당 받는다. -
각
UNDOO
레코드에는ITL SLOT
이 있고, 블록에 속한 레코드 갱신을 위해서,ITL
슬롯을 먼저 확보한다. -
커밋이 이루어지면, 블록 클린아웃을 하지 않는다.
-
따라서 클린 아웃 되지 않은 블록에 작업을 하게 되면,
SNAP SHOT TOO OLD
가 발생한다.