DB/sqlp (6) 썸네일형 리스트형 [친절한 SQL 튜닝] 5장 소트 연산에 대한 이해 5.1 소트 연산에 대한 이해 5.1.1 소트 수행 과정 소트는 PGA에 할당한 Sort Area 에서 이루어진다. 메모리 공간인 Sort Area 가 다 차면, 디스크 Temp 테이블스페이스를 활용합니다. 메모리 소트(In-Memory Sort) : 전체 데이터의 정렬 작업을 메모리 내에서 완료(=Internal Sort) 디스크 소트(To-Disk Sort) : 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크까지 활용( =External Sort) 디스크 소트 과정 소트할 대상 집합을 SGA 버퍼캐시를 통해 읽어 Sort Area 에서 정렬 시도. 양이 많은 경우 정렬된 중간집합을 Temp 테이블스페이스에 임시 세그먼트를 만들어 저장(=Sort Run) 최종적으로 다시 merge 합니다.. [친절한 SQL 튜닝] 6장 DML 6.0 DML 성능 영향 요소 기본적인 DML 튜닝을 설명하기 전 DML 성능에 영향을 미치는 요소에 대해 설명합니다. 인덱스 인덱스를 위한 데이터를 생성하거나 삭제하는 작업은 DML 성능에 영향을 줍니다. INSERT, DELETE는 인덱스 조작을 한 번만 수행합니다. UPDATE는 인덱스 조작을 두 번 수행합니다. (DELETE , INSERT) 시스템마다 다르지만 인덱스 1개에 100만 건 데이터를 넣을 때는 5초 인덱스 3개에 100만 건 데이터를 넣을 때는 40초 무결성 제약 PK, FK, Check, Not Null 같은 제약도 DML 성능에 영향을 줍니다. 시스템마다 다르지만 PK가 없으면 100만건 데이터를 넣을 때는 1.3초 PK가 있으면 100만건 데이터를 넣을 때는 4.95초 조건절 .. [친절한 SQL 튜닝] 4장 NL 조인 4.1 NL 조인 NL 조인은 인덱스를 이용한 조인이다. 4.1.1 기본 메커니즘 - Nested Loops 조인(NL 조인) - 일반적으로 NL 조인은 Outer 와 Inner 양쪽 테이블 모두 인덱스를 이용합니다. - Outer 테이블은 사이즈가 크지 않거나 또는 Table Full Scan 을 해도 한번에 그치므로 인덱스를 사용하지 않을 수 있습니다. - 하지만 Inner 테이블을 Outer 루프를 읽는 건수만큼 반복되므로 인덱스를 반드시 사용해야 합니다. 4.1.2 NL 조인 실행계획 제어 4.1.3 NL 조인 수행 과정 분석 - 한 레코드씩 순차적으로 진행된다는 사링이 중요하다 - 1. 초기 컬럼 이 BETWEEN인 경우 비효율 없이 한 방에 스캔 합니다. 하지만 그만큼 테이블 랜덤 액세스가 발.. [친절한 SQL 튜닝] 3장 인덱스 튜닝 인덱스 튜닝 3.1 테이블 액세스 최소화 - SQL 튜닝은 랜덤 I/O 와의 전쟁이다. 3.1.1 테이블 랜덤 액세스 인덱스 ROWID 는 논리적 주소 - 인덱스를 스캔한 후 반드시 테이블을 액세스합니다. - 인덱스 ROW ID 는 논리적 주소로 테이블 레코드를 찾아가기위한 주소 정보를 가진다 메인 메모리 DB 와 비교 - 잘 튜닝된 OLTP 성 DB 는 버퍼 캐시 히트율이 99% 이상입니다. - 그렇다면 디스크 DB 는 메인 메모리 DB(디스크 상의 주소정보가 아닌 메모리상의 주소정보(Pointer) 를 가져 엄청나게 빠르다 ) 와 비교했을때 성능이 비슷할 거 같지만 실제 성능이 좋지 않으며 대량 인덱스 액세스 시 엄청난 차이를 보입니다. - 오라클은 테이블 블록이 수시로 버퍼 캐시에서 밀려났다가 다시.. [친절한 SQL 튜닝] 2장 인덱스 구조 및 탐색 2.1 인덱스 구조 및 탐색 - 인덱스 : 온라인 트랜잭션 처리 (Online Transaction Processing) 시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 중요하다. 인덱스 튜닝의 2 가지 핵심요소 1. 인덱스 스캔 효율과 튜닝 - 인덱스 스캔 과정에서 발생하는 비효율을 줄이는 것 - 예) 어떤 컬럼을 인덱스로 활용해야 스캔량이 줄어들까? 2. 랜덤 액세스 최소화 튜닝 - 테이블 액세스 횟수를 줄이는 것 - 1번보다 2번이 성능에 미치는 영향이 더크므로 중요하다. - **즉 SQL 튜닝은 랜덤 I/O 와의 전쟁이다.** 2.1.2 인덱스 구조 - 루트 , 브랜치 블록에 있는 각 레코드는 하위 블록에 대한 주소값을 가진다. - LMC(Leftmodst Child) : 자식 노드 중 .. [친절한 SQL 튜닝] 1장 SQL 처리 과정과 I/O 1.1 SQL 파싱과 최적화 1.1.1 구조적, 집합적, 선언적 질의 언어 SQL(Structured Query Language) 구조적 질의 언어 구조적(structued)이고 집합적(set-based)이고 선언적(declarative) 인 질의 언어 결과 집합은 구조적, 집합적이지만 만드는 과정은 절차적(procedural)이어야 한다. 옵티마이저 프로시저를 만들어 내는 DBMS 내부엔진이 바로 SQL 옵티마이저이다. 옵티마이저가 프로그래밍을 대신해 주는 셈이다. 1.1.2 SQL 최적화 SQL 최적화 과정 1. SQL 파싱 - 파싱트리 생성(SQL 개별 요소를 파싱트리로 생성) -> Syntax 체크(문법적 오류, 순서 , 키워드 등 체크 ) -> Semantic 체크(존재하지 않는 테이블, 컬럼,.. 이전 1 다음