본문 바로가기

반응형

Data Science

(60)
[SQLP] 2-3. 인덱스 확장기능 사용법 인덱스 기본 사용법 Index Range Scan 중심 인덱스 확장기능 사용법 Index Full Scan, Index Unique Scan, Index Skip Scan, Index Fast Full Scan 1. Index Range Scan [B*Tree 인덱스의 가장 일반적인 형태의 액세스] 인덱스 루트에서 리프 블록까지 수직적으로 탐색한 후 필요한 범위만 스캔 SET AUTOTRACE TRACEONLY EXP SELECT * FROM emp WHERE deptno=20; Execution Plan ------------------------------------------------------------------ SELECT STAEMENT Optimizer=ALL_ROWS TABLE ACCE..
[SQLP] 2-2. 인덱스 기본 사용법 인덱스 기본 사용법 : 인덱스를 Range Scan 하는 방법 인덱스 확장기능 사용법 : Index Range Scan 이외의 다양한 스캔 방식 1. 인덱스를 사용한다는 것 수직적 탐색이 가능한 이유 : 색인이 가나다 순으로 정렬되어 찾고자 하는 단어들이 서로 모여있기 때문 시작하는 단어가 아닌 포함하는 단어 찾기 : 색인이 정렬되어 있음에도 불구하고, 시작점을 찾을 수 없고, 스캔하다가 중간에 멈출 수도 없다. -> 찾고자 하는 단어들이 흩어져 있기 때문 -> 따라서,색인을 사용하지 못하는 것이 아니라, 시작점을 찾을 수 없고 멈출 수 없기 때문에 색인 전체를 스캔해야 한다. 인덱스의 사용 : 인덱스 칼럼 [선두 칼럼]을 가공하지 않아야 사용 가능 = 리프 블록에서 스캔 시작점을 찾아 스캔하다가 중간에..
[SQLP] 2-1. 인덱스 구조 및 탐색 인덱스 구조 및 탐색 인덱스 탐색 과정 : 수직적 탐색과 수평적 탐색 1. 미리 보는 인덱스 튜닝 데이터를 찾는 두 가지 방법 1. 처음부터 끝까지 찾기 [모든 교실을 돌면서 학생 찾는 경우] 2. 기록을 조회해서 해당되는 곳에서 찾기 [이름순으로 정렬한 학생 명부 이용] -> 해당하는 내용이 많으면 1번이 빠르고, 수가 적으면 2번이 빠르다. 이름 ->이름으로 많이 찾기 때문에 이름순 정렬- 학년-반-번호 -> 인덱스 ROWID 강수지 4학년 3반 37번 홍길동 1학년 5반 15번 홍길동 2학년 6반 24번 홍길동 5학년 1반 16번 데이터베이스 테이블에서 데이터를 찾는 방법 : 테이블 전체 스캔 -> 모든 교실을 돌면서 학생 찾는 경우 : 인덱스 이용 -> 이름순으로 정렬한 학생 명부 이용 테이블 전..
[SQLP] SQL 처리과정과 I/O 연관된 오라클 파라미터 T 테이블에 통계정보를 수집하는 명령어 exec dbms_stats.gather_table_stats(user, 't'); 실행계획 확인하는 방법 [AutoTrace를 활성화해서 SQL 실행] SET AUTOTRACE TRACEONLY EXP; 데이터베이스의 블록 사이즈 확인 SHOW PARAMETER BLOCK_SIZE 또는 파라미터 뷰 직접 조회 SELECT VALUE FROM V$PARAMETER WHERE NAME='db_blck_size'; 손수레에 한 번에 담는 양 조회하고 변경 SHOW PARAMETER db_file_multiblock_read_count ALTER SESSION SET db_file_multiblock_read_count=128;
[SQLP] 1-3. 데이터 저장 구조 및 I/O 메커니즘 데이터 저장 구조, 디스크 및 메모리에서 데이터를 읽는 메커니즘을 통해 I/O에 대한 이해 1. SQL이 느린 이유 : 디스크 I/O 때문 데이터베이스 서버와 스토리지 서버 간의 I/O 병목 I/O처리 하는 동안 프로세스가 잠을 자고있다. 프로세스가 갖는 생명주기에서 실행중인 프로세스는 인터럽트에 의해 수시로 실행 준비로 전환된다. [여러 프로세스가 하나의 CPU를 공유할 수 있지만, 특정 순간에는 하나의 프로세스만 CPU를 사용할 수 있기 때문에] 인터럽트 없이 실행중인 프로세스도 디스크에서 데이터를 읽어야 할 때 CPU를 OS에 반환하고 수면(waiting) [대기] 상태에서 I/O가 완료되기를 기다린다. [정해진 OS 함수를 호출 (I/O CALL)하고 CPU반환한 채 알람을 설정하고 대기 큐에서 ..
[SQLP] 1-2. SQL 공유 및 재사용 1. 소프트 파싱과 하드 파싱의 차이점 라이브러리 캐시 : SQL 최적화 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있도록 캐싱해두는 메모리 공간 라이브러리 캐시는 SGA 구성요소로, SGA는 System Global Area이며 서버 프로세스와 백그라운드 프로세스가 공통적으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간이다. 사용자가 SQL문 전달 -> DBMS가 SQL파싱 후 해당 SQL이 라이브러리 캐시에 존재하는지 확인 -> 캐시 찾으면 실행 : 소프트 파싱 -> 캐시 못찾으면 최적화 단계를 거친다. : 하드 파싱 최적화 과정이 필요하면 하드 파싱인 이유 : 조인 순서, 조인 방식, 테이블 스캔할지 인덱스 스캔할지, 인덱스 스캔시 스캔 방식 결정 옵티마이저가 사용하는 정보 : ..
[SQLP] 1-1. SQL 파싱과 최적화 1. SQL은 구조적, 집합적, 선언적 언어 사용자가 SQL을 던지면, 옵티마이저가 실행계획을 짜서 프로시저를 작성한다. 이 과정이 SQL 최적화 2. SQL 최적화 : SQL 파싱 -> SQL 최적화 -> 로우 소스 생성 SQL 파싱 : 파싱 트리 생성, Syntax 체크, Semantic 체크 SQL 최적화 : 옵티마이저가 생선한 실행경로 중 효율적인 하나를 선택 로우 소스 생성 : 로우 소수 생성기가 옵티마이저가 선택한 실행 경로를 실행 가능한 코드 또는 프로시저로 포맷팅 3. SQL 옵티마이저 : 데이터 액세스 경로 선택하는 DBMS 엔진 옵티마이저의 최적화 단계 : 쿼리를 수행하는데 후보군의 실행계획 찾기 -> 데이터 딕셔너리에 수집해 둔 오브젝트 통계 및 시스템 통계정보를 이용해 비용 산정 -..
[SQLP] 목차 SQL 처리 과정과 I/O 인덱스 기본 인덱스 튜닝 조인 튜닝 소트 튜닝 DML 튜닝 SQL 옵티마이저

반응형