본문 바로가기

DB/SQLP21

[J STORY] SQLP - SQL 파싱 부하 1. SQL 처리과정 사용자는 구조화된 질의언어(SQL, Structured Query Language)를 통해 사용자가 원하는 결과집합을 정의 DBMS는 사용자의 SQL을 SQL옵티마이저를 통해 실행계획으로 작성해줌 가. SQL 파싱(Parsing) SQL을 실행하면 제일먼저 SQL 파서(parser)가 SQL 문장에 문법적 오류가 없는지 검사(Syntax 검사) 문법적 오류가 없다면 의미상 오류가 없는지 검사(Semantic 검사, 오브젝트 존재유무등) 검사를 다 마치면, 사용자가 발생한 SQL과 그 실행계획이 라이브러리캐시(프로시저캐시)에 캐싱되어 있는지 확인 캐싱되어 있다면 소프트파싱, 캐싱되어있지 않다면 하드파싱 파싱종류 소프트파싱 (Soft Parsing) SQL과 실행계획을 캐시에서 찾아 곧.. 2021. 4. 25.
SQLP - 인덱스 기본 1. 인덱스 특징과 종류 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기(색인)과 유사한 개념이다. 인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 인덱스의 기본적인 목적은 검색 성능의 최적화이다. 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을수 있도록 돕는다. DML 작업은 테이블과 인덱스를 함께 변경하므로 느려지는 단점이 존재한다. 가. 트리기반 인덱스 DBMS에서 가장 일반적인 인덱스이다. B 트리 인덱스는 브랜치블록과 리프 블록으로 구성한다. 브랜치 블록중 가장 상위에 있는 블록을 루트 블록이라한다. 브랜치 블록은 분기를 목적으로 하는 블록이다. 리프 블록은 트리 가장 아래 단계에 존재한다. 리프블록은 인덱스를 구성하는 칼럼의 데이터와 해당 데이터를.. 2021. 4. 24.
SQLP - 데이터베이스 아키텍처 1. 아키텍처 가. ORACLE 아키텍처 데이터베이스 : 물리적인 디스크에 저장된 데이터집합(데이터파일, 리두로그파일, 컨트롤파일) 인스턴스 : 공유메모리(SGA)와 이를 엑세스하는 프로세스 집합 ★ 하나의 인스턴스는 하나의 데이터베이스를 엑세스(Single), 여러개의 인스턴스는 하나의 데이터베이스를 엑세스(RAC) 나. SQL SERVER 아키텍처 정의 하나의 인스턴스당 최고 32,767개의 데이터베이스를 정의해서 사용 기본적으로 시스템데이터베이스가 만들어지면, 사용자데이터베이스를 추가하여 생성하는 구조 시스템데이터베이스 : mster, model, msdb, tempdb 등 사용자데이터베이스 : 데이터파일(mdf), 트랜잭션로그파일(ldf), 보조데이터파일(ndf) 2. 프로세스 서버프로세스 : 전.. 2021. 4. 24.
[J STORY] SQLP - 조인 수행 원리 1. 조인이란 ? 조인이란 두개 이상의 테이블을 하나의 집합으로 만드는 연산이다. 조인기법중 자주사용되는 조인은 NL JOIN, HASH JOIN, SORT MERGE JOIN등이 있다. 2. NL Join NL 조인은 프로그램에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행한다. 반복문의 외부에 있는 테이블을 선행 테이블 또는 외부테이블(OUTER TABLE)이라고하고, 반복문의 내부에 있는 테이블을 후행 테이블 또는 내부(INNER TABLE)이라고 한다. 먼저 선행 테이블의 조건을 만족하는 행을 추출하여 후행 테이블을 읽으면서 조인을 수행한다. 선행테이블의 조건을 만족하는 모든 행의 수만큼 반복수행한다. 선행 테이블의 조건을 만족하는 행의 수가 많으면 그만큼 후행 테이블 조인작업은 반복 수.. 2021. 4. 22.
SQLP - 옵티마이저와 실행계획 1. 옵티마이저 옵티마이저는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다. 옵티마이저가 선택한 실행 방법의 적절성 여부는 질의 수행 속도에 가장 큰 영향을 미치게된다. 옵티마이저가 최적의 살행 방법을 결정하는 방식에는 규칙기반(RBO, Rule Based Optimizer)와 비용기반(CBO, Cost Based Optimizer)로 구분한다. 현재는 비용기반(CBO) 위주로 신규 기능에 지원되고, 규칙기반(RBO) 에서는 신규 기능에 대해서 지원하지않는다. 가. 규칙기반 옵티마이저 규칙기반 옵티마이저가 실행계획을 생성할 때 참조하는 정보에는 SQL문을 실행하기 위해서 이용 가능한 인덱스 유무와(유일, 비유일, 단일, 복합 인덱스) 종류, SQL문 에서 사용하는 연산자(=.. 2021. 4. 18.
[J STORY] SQLP - DML(DATA MANIPULATION LANGUAGE) 1. INSERT 테이블에 데이터를 입력하는 방법은 두 가지 유형이 있으며 한 번에 한 건만 입력된다. 해당 칼럼명과 입력되어야 하는 값을 서로 1:1로 매핑해서 입력하면 된다. 해당 칼럼의 데이터 유형이 CHAR나 VARCHAR2 등 문자 유형일 경우 『 ' 』(SINGLE QUOTATION)로 입력할 값을 입력한다. 숫자일 경우 『 ' 』(SINGLE QUOTATION)을 붙이지 않아야 한다. 첫 번째 유형은 테이블의 칼럼을 정의할 수 있는데, 이때 칼럼의 순서는 테이블의 칼럼 순서와 매치할 필요는 없으며, 정의하지 않은 칼럼은 Default로 NULL 값이 입력된다. 단, Primary Key나 Not NULL 로 지정된 칼럼은 NULL이 허용되지 않는다. 두 번째 유형은 모든 칼럼에 데이터를 입력.. 2021. 4. 12.