일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- socket
- 친절한 SQL 튜닝
- 상속
- 자바
- 생성자
- 인스턴스
- 인덱스 튜닝
- DB
- 메소드
- 클라이언트
- java
- 인덱스 기본
- SQL
- 서버
- 인덱스 range scan
- db버퍼캐시
- Oracle
- Swing
- 컬렉션프레임워크
- 클래스
- SQLP
- 코딩
- springboot
- 오라클
- 멀티쓰레드
- 깃허브
- 백준
- JavaScript
- 카카오코딩테스트
- Spring
- Today
- Total
목록SQLP (6)
프리 정보 컨텐츠
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pZBfe/btsMdHfMdHC/sN2ePJP0WayOkC54doPj7k/img.png)
3장 인덱스 튜닝SQL 튜닝은 랜덤 I/O와의 전쟁임을 거듭 강요한다.3장에서는 테이블 랜덤 액세스를 최소화하는 구체적인 방법에 대해 소개한다.3.1.1 테이블 랜덤 액세스인덱스를 이용해도 조건절에 해당하는 데이터만 골라서 읽는데 파티션 Pruning은 왜 필요할까 굳이 파티션이 필요할까? 에 대한 질문에 대한 답을 소개한다.인덱스로 검색해도 빠른데 왜 굳이 파티셔닝을 할까?인덱스로 검색하는데 왜 느릴까?데용량 데이터를 인덱스 사용하면 데이터가 금방 조회된다는 사실, 대량 데이터를 조회할 때 인덱스를 사용하니 테이블 전체를 스캔할 때보다 훨씬 느리다는 사실은 SQL 튜닝 핵심을 이해하면 이해할 수 있다.인덱스 ROWID 는 물리적 주소? 논리적 주소?SELECT * FROM 고객 WHERE 지역 = '서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bHQYtd/btsMcA1BnNr/vLfihDQ8CkIgY2nIRXEm91/img.png)
2.3 인덱스 확장 기능 사용법인덱스 스캔 방식은 Index Range Scan 뿐만 아니라 Index Full Scan, Index Unique Scan, Index Skip Scan, Index Fast Full Scan 등이 존재한다. 각 스캔 방식의 주요 특징에 대해서 알아보자.2.3.1 Index Range ScanIndex Range Scan은 B+Tree 인덱스의 가장 일반적이고 정상적인 형태의 액세스 방식이다.인덱스 루트에서 리프 블록까지 수직적으로 탐색한 후에 필요한 범위만 스캔한다.SELECT * FROM EMP WHERE DEPNO = 20;앞서 강조한 그대로 인덱스를 Range Scan 하려면 선두 컬럼을 가공하지 않은 상태로 조건절에 사용해야 한다. (선두 컬럼을 가공하지 않은 상..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUPluE/btsL976xvYa/GRRKfrqmAsoCPjxi3IjSaK/img.png)
2장 인덱스 기본인덱스에 대한 개념만 알고있을 뿐 명확한 그림이 없는 상태에서 설계하고 개발하니 성능이 좋을 리 없다.인덱스 탐색 과정이 수직적 탐색과 수평적 탐색 두 단계로 이루어진다는 사실에 대해 유념하며 알아보자.2.1 인덱스 구조 및 탐색데이터를 찾는 두 가지 방법어떤 초등학교를 방문해 '홍길동' 학생을 찾는 방법은 두 가지다.첫째는, 1학년 1반부터 6학년 맨 마지막 반까지 모든 교실을 돌며 홍길동 학생을 찾는 것이다.둘째는, 교무실에서 학생 명부를 조회해 홍길동 학생이 있는 교실만 찾아가는 것이다.결과는 홍길동 학생이 많으면 첫째, 몇 안 되면 후자가 빠르다.데이터베이스 테이블에서 데이터를 찾는 방법도 크게 아래 두 가지에 해당한다.테이블 전체를 스캔한다.인덱스를 이용한다.모든 교실을 돌며 학..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9qrzz/btsL7Aarm8J/GzbVUxBm0noUqLiZxZIdZK/img.png)
1장 SQL 처리 과정과 I/O1.1 SQL 파싱과 최적화SQL 튜닝을 시작하기에 앞서 옵티마이저가 SQL을 어떻게 처리하는지, 서버 프로세스는 어떻게 읽고 저장하는지 살펴보자.옵티마이저SQL 옵티마이저는 SQL쿼리를 최적하기 위해 최적의 실행 계획을 결정하며 아래와 같은 과정을 통해 이루어집니다. (네비게이션과 같은 역할을 해주는 최적의 실행 계획을 해주는 내부 엔진으로 기억하자)쿼리 파싱 및 분석 : SQL문을 분석하고 파싱하여 내부 표현으로 변환하여 분석.통계 정보 수집 : 테이블 및 인덱스 통계 정보 수집.실행 계획 생성 : 테이블 및 인덱스 액세스 방법, 조인 순서, 조인 방법 포함 실행.최적 실행 계획 선택 : 생성된 실행 계획 중에서 가장 효율적 선택함으로써 쿼리 실행 시간, 리소스 사용량 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbCu0q/btsL7CzgP5a/9uxzkt8ILUPKmforGCL4Y0/img.png)
DB 버퍼 캐시사용자가 입력한 데이터를 데이터 파일에 저장한 뒤, 다시 읽는 과정에서 거쳐가는 캐시 영역이다.최근에 사용한 블록에 대한 정보를 저장하는 메모리의 일정 영역으로 물리적인 I/O를 최소화한다.블록단위 I/O메모리 버퍼 캐시에서 버퍼 블록을 액세스 할 때데이터파일에 저장된 데이터 블록을 DB 버퍼 캐시로 적재할 때캐시에서 변경된 블록을 다시 데이터파일에 저장할 때Single Block I/O한번의 I/O Call에 하나의 데이터 블록만 읽어 메모리에 적재하는 방법이다.인덱스를 경유해 테이블 액세스시 사용하는 액세스 방법이다.Multi Block I/OCall이 필요한 시점에 인접한 블록들을 같이 읽어 메모리에 적재하는 방법이다.Full Table Scan시 사용하는 액세스 방법이다.버퍼 캐시 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4IOmd/btsL6AnRAFD/HhQkOBDAbhVwnNecEIakHk/img.png)
오라클 아키텍처 구성오라클 아키텍처는 크게 다음과 같이 구성된다.오라클 인스턴스오라클 인스턴스는 SGA와 Process로 구성되어있다.SGA (System Global Area)Oracle은 구동을 시작할 때 가장먼저 SGA라는 메모리 캐시 영역을 할당한다.크게 DB 버퍼캐시, Shared Pool, Redo Log Buffer 3가지로 존재한다.SGA는 공유 메모리 영역으로 많은 프로세스가 동시에 데이터를 액세스하여 사용자 데이터를 보호하는 메모리 액세스를 직렬화 하기 위한 Latch 가 필요하다.ADB 버퍼캐시DBWR에 의해서 관리되며 데이터 파일들로부터 읽은 Data Block의 복사본을 담고 있는 영역이다.수행하는 SQL문장의 실제 데이터를 메모리에 저장하여 다른 사용자의 동일한 데이터 요청 시 ..