일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 클래스
- Spring
- SQLP
- DB
- 서버
- SQL
- 멀티쓰레드
- Undo
- springboot
- 생성자
- 친절한 SQL 튜닝
- 인덱스 튜닝
- Swing
- 클라이언트
- 친절한 sql튜닝
- 컬렉션프레임워크
- Oracle
- 오라클
- java
- 상속
- 백준
- db버퍼캐시
- 카카오코딩테스트
- 메소드
- DBA
- socket
- 인스턴스
- 깃허브
- 자바
- 인덱스
- Today
- Total
목록전체 글 (89)
프리 정보 컨텐츠

5장 소트 튜닝소트할 대상 집합을 SGA 버퍼캐시를 통해 읽어 Sort Area에서 정렬을 시도한다.Sort Area안에서 정렬을 마무리하는 것이 최적이지만, 양이 많을 때는 Temp 테이블 스페이스에 임시 세그먼트를 만들어 저장한다. Sort Area가 찰 때마다 Temp 영역에 저장해 둔 중간 단계의 집합을 Sort Run 이라고 부르며 정렬된 최종 결과집합을 얻으려면 다시 Merge 해야 한다.소트 연산은 메모리 집약적일 뿐 아니라 CPU 집약적이기도 하여 데이터량이 많으면 I/O 까지 발생하여 쿼리 성능을 좌우하는 중요한 요소이다.부분범위 처리를 불가능하게 함으로써 OLTP 환경에서 애플리케이션 성능을 저하시키는 주요인이 되기도 한다.5.1.2 소트 오퍼레이션Sort AggregateSort Ag..

버퍼 Lock버퍼 Lock 이란?자신이 현재 그 버퍼를 사용 중임을 버퍼 헤더에 Pin을 설정하여 표시하는 것이다.캐쉬된 버퍼 블록을 읽거나 변경하려는 프로세스는 버퍼 헤더로부터 버퍼 Lock을 획득해야 한다.오라클은 Row Level로 Lock을 제공하여 서로 다른 Row를 변경하는 것은 문제가 되지 않는다.하지만 1개의 블록을 동시에 변경하는 것은 안되어 한 명의 사용자 만이 블록을 변경하고 있다는 것을 보장 받아야 하는데 이 때 획득하는 것이 버퍼 Lock이다.버퍼 Lock 상태Share 모드 Lock버퍼 내용을 읽기만 할 때 사용한다.Exclusive 모드 Lock버퍼 내용을 변경할 때 사용한다.버퍼가 Exclusive 모드로 점유되어 있다면 버퍼 헤더의 Lock 대기자 목록에 등록 후 래치를 해..

4장 조인 튜닝4.1.1 NL 조인 기본 메커니즘SELECT E.사원명, C.고객명, C.전화번호FROM 사원 E, 고객 CWHERE E.입사일자 >= '19960101'AND C.관리사원번호 = E.사원번호위 테이블에서 1996년 1월 1일 이후 입사한 사원이 관리하는 고객 데이터를 추출하는 데이터를 만들어 보자.가장 쉽게 생각하는 방법은 사원 테이블로부터 1996년 1월 1일 이후 입사한 사원을 찾은 후, 고객 테이블에서 사원번호가 일치하는 레코드를 찾는 것 이것이 Nested Loop 조인이 사용하는 알고리즘이다.아래 수행 구조를 통해 쉽게 이해할 수 있다.for(i=0; ifor outer in 1..100 loop for inner in 1..100 loop dbms_outpu..

2025년 SQLP 시험일정2025년 SQLP 시험은 52회 원서접수는 종료되었고 53회 회차가 존재합니다.위의 그림처럼 원서 접수는 7.21 ~ 7.25 일이며 시험일은 8.23(토) 이고 합격자 발표는 9.19(금) 입니다.SQLP 자격증이란?SQLP(SQL Professional) 자격증은 한국데이터산업진흥원(K-DATA)에서 주관하는 데이터베이스 전문가 인증 시험으로, 데이터 모델링과 SQL 활용 능력을 검증하는 자격증입니다. SQLP는 SQLD(SQL Developer)보다 한 단계 상위 자격으로, 데이터베이스 설계, 최적화, 성능 튜닝 등의 고급 내용을 다룹니다.또한 SQLP 자격증이 있으면 기업에서 전문가로 인정해주며, 공공기관 및 국가사업 프로젝트를 하는 개발자분들에게도 우대사항이 적용됩니..
3.4 인덱스 설계온라인 트랜잭션을 처리하는 시스템에서 인덱스 설계의 중요성은 인덱스 튜닝, 더 나아가 SQL 튜닝의 하이라이트라고도 할 수 있다.3.4.1 인덱스 설계가 어려운 이유SQL에 각각 최적화된 인덱스를 마음껏 생성할 수 있다면 인덱스 설계만큼 쉬운 일도 없다. 하지만 인덱스를 많으면 아래와 같은 문제가 발생한다.DML 성능 저하 (TPS 저하)데이터베이스 사이즈 증가데이터베이스 관리 및 운영 비용 상승예를 들어 한 테이블에 인덱스가 여섯 개 달려 있으면, 신규 데이터를 입력할 때마다 여섯 개 인덱스에도 데이터를 입력해야 한다.테이블과 달리 인덱스는 정렬 상태를 유지해야 하므로 수직적 탐색을 통해 입력할 블록부터 찾는다.데이터를 지울 때도 마찬가지이다. 여섯 개 인덱스에서 레코드를 일일이 찾아..

3장 인덱스 튜닝SQL 튜닝은 랜덤 I/O와의 전쟁임을 거듭 강요한다.3장에서는 테이블 랜덤 액세스를 최소화하는 구체적인 방법에 대해 소개한다.3.1.1 테이블 랜덤 액세스인덱스를 이용해도 조건절에 해당하는 데이터만 골라서 읽는데 파티션 Pruning은 왜 필요할까 굳이 파티션이 필요할까? 에 대한 질문에 대한 답을 소개한다.인덱스로 검색해도 빠른데 왜 굳이 파티셔닝을 할까?인덱스로 검색하는데 왜 느릴까?데용량 데이터를 인덱스 사용하면 데이터가 금방 조회된다는 사실, 대량 데이터를 조회할 때 인덱스를 사용하니 테이블 전체를 스캔할 때보다 훨씬 느리다는 사실은 SQL 튜닝 핵심을 이해하면 이해할 수 있다.인덱스 ROWID 는 물리적 주소? 논리적 주소?SELECT * FROM 고객 WHERE 지역 = '서..

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 하려면 선두 컬럼을 가공하지 않은 상태로 조건절에 사용해야 한다. (선두 컬럼을 가공하지 않은 상..

2장 인덱스 기본인덱스에 대한 개념만 알고있을 뿐 명확한 그림이 없는 상태에서 설계하고 개발하니 성능이 좋을 리 없다.인덱스 탐색 과정이 수직적 탐색과 수평적 탐색 두 단계로 이루어진다는 사실에 대해 유념하며 알아보자.2.1 인덱스 구조 및 탐색데이터를 찾는 두 가지 방법어떤 초등학교를 방문해 '홍길동' 학생을 찾는 방법은 두 가지다.첫째는, 1학년 1반부터 6학년 맨 마지막 반까지 모든 교실을 돌며 홍길동 학생을 찾는 것이다.둘째는, 교무실에서 학생 명부를 조회해 홍길동 학생이 있는 교실만 찾아가는 것이다.결과는 홍길동 학생이 많으면 첫째, 몇 안 되면 후자가 빠르다.데이터베이스 테이블에서 데이터를 찾는 방법도 크게 아래 두 가지에 해당한다.테이블 전체를 스캔한다.인덱스를 이용한다.모든 교실을 돌며 학..