10. 고급 SQL 튜닝

  . DML 튜닝 방안 – 대량 데이터에 대해 작업할 경우 인덱스를 Unusable 상태로 변경하고 작업한 후에 인덱스를 재생성하는 것이 빠를 수 있다. – 오라클의 수정가능 조인 뷰는 키-보존 테이블에만 입력, 수정, 삭제가 허용된다. – 대량 데이터에 대한 UPDATE나 DELETE문의 경우 기존 데이터를 임시 테이블에 저장하고 테이블을 TRUNCATE 한 후 임시 테이블을 이용해 다시 입력하는

9. 인덱스와 조인

  . 비트맵 인덱스 – 고객번호처럼 Distinct Value 개수가 아주 많을 때, B*Tree 인덱스 보다 훨씬 많은 공간을 차지한다. – 여러 비트맵 인덱스를 동시에 사용 가능하고, Bitwise Not 연산도 가능하다. – Lock에 의한 DML 부하가 심각해서 OLTP성 환경에는 부적합하다.   . Hash Join – 조인 연결고리에 equi-join 조건이 하나라도 있어야 한다. – Build Input으로 선택된

8. 옵티마이저 원리

  . CBO(비용기반 옵티마이저) – 쿼리 최적화 과정에 Cost를 계산한다. – 비용이란 기본적으로, SQL 수행 과정에 수반될 것으로 예상되는 I/O일량을 계산한 것이다. – 옵티마이저가 비용을 계산할 때, CPU 속도, 디스크 I/O 속도 등도 고려할 수 있다. – 최신 옵티마이저는 I/O에 CPU 연산 비용을 더해서 비용을 계산한다.   . 전체범위 최적화(ALL_ROWS) 방식의 옵티마이저 – 쿼리의 최종

7. Lock과 트랜잭션 동시성제어

  . Read Committed – 기본 트랜잭션 격리성 수준(Transaction Isolation Level)   . 트랜잭션 동시성 제어 – 비관적 동시성 제어(Pessimistic Concurrency Control)는 두 트랜잭션이 같은 데이터를 동시에 수정할 것이라고 가정하고 데이터를 읽는 시점에 Lock을 설정하는 방식을 말한다. – 낙관적 동시성 제어(Optimistic Concurrency Control)는 두 트랜잭션이 같은 데이터를 동시에 수정하지 않을 것이라고 가정하고 데이터를 읽는 시점에

6. SQL 고급활용 및 튜닝

  . 데이터베이스 연결(Connection) – 연결 요청에 대한 부하는 쓰레드(Thread) 기반 아키텍처 보다 프로세스 기반 아키텍처에서 더 심하게 발생한다. – 전용 서버(Dedicated Server) 방식으로 오라클 데이터베이스에 접속하면 사용자가 데이터베이스 서버에 연결 요청을 할 때마다 서버 프로세스(또는 쓰레드)가 생성된다. – 공유 서버(Shared Server) 방식으로 오라클 데이터베이스에 접속하면 사용자가 데이터베이스 서버에 연결 요청을 할 때마다 서버 프로세스(또는

5. SQL 최적화 기본 원리

  . CBO(Cost Based Opimizer) – 테이블 및 인덱스 등의 통계 정보를 활용하여 SQL문을 실행하는데 소요될 처리시간 및 CPU, I/O 자원량 등을 계산하여 가장 효율적ㅇ일 것으로 예상되는 실행계획을 선택하는 옵티마이저 . 실행계획을 통해 알수 있는 정보 – 액세스 기법 – 질의 처리 예상 비용(Cost) – 조인 순서   . 실행순서 1. NESTED LOOPS 2. HASH