Database

인덱스 특징과 종류 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념입니다.인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조입니다. 그렇지만 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다는 단점이 존재합니다. 트리 기반 인덱스 데이터베이스에서 가장 일반적인 인덱스는 B-트리 인덱스 입니다. B-트리 인덱스는 브랜치 블록과 리프 블록으로 구성됩니다.브랜치 블록 중에서 가장 상위에 있는 블록을 루트 블록이라고 합니다.브랜치 블록은 분기를 목적으로 하는 블록이며, 다음 단계의 블록을 가르키는 포인터를 가지고 있습니다.리프 블록은 트리의 가장 아래 단계에 존재합니다.리프 블록은 인덱스를 구성하는 컬럼의 데이터와 해당 데이터를 가지고 있는..
옵티마이저 사용자가 질의한 SQL 문에 대해 최적의 실행 방법을 결정하는 역할을 수행합니다.이러한 최적의 실행 방법을 실행계획(Execution Plan)이라고 합니다. 옵티마이저가 최적의 실행을 결정하는 방식에 따라 규칙기반(RBO, Rule Based Optimizer)와 비용기반(CBO, Cost Based Optimizer) 방식이 있습니다. 규칙기반 옵티마이저 규칙(우선 순위)를 가지고 실행계획을 생성합니다.규실행계획을 생성할 때 참조하는 정보에는 인덱스 유무, 연산자, 객체 등의 종류가 있습니다. ORACLE 의 규칙기반 옵티마이저 순위이며, 숫자가 낮을수록 우선순위가 높습니다.1. Single row by rowid2. Single row by clusterjoin3. Single row b..
조인 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 말합니다.조인이 필요한 이유는 정규화에서 출발합니다.정규화란 불필요한 데이터의 정합성을 확보하고 이상현상 발생을 피하기 위해, 테이블을 분할하여 생성하는 것을 말합니다. EQUI JOIN 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법입니다.JOIN 의 조건은 WHERE 절에 기술하게 되는데 = 연산자를 사용하여 표현합니다.SELECT 테이블1.컬럼명, 테이블2.컬럼명, .. FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명1 = 테이블2.컬럼명1; 이 방식을 ANSI/ISO SQL 표준 방식으로 표현하면 다음과 같습니다.SELECT 테이블1.컬럼명, 테이블2.컬럼명, .. FROM 테이블1 IN..
집계함수여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중햄 함수 중 집계 함수 입니다. 집계함수의 특성1. 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다.2. GROUP BY 절은 행들을 소그룹화 한다.3. SELECT, HAVING, ORDER BY 절에 사용할 수 있다. 집계함수의 종류 집계 함수 사용 목적 COUNT(*) NULL 값을 포함한 행의 수를 출력한다. COUNT(표현식) 표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력한다. SUM([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력한다. AVG([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 평균을 출력한다. MAX([DISTINCT | ..
함수란? 벤더에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수로 나뉩니다.여기에서는 기본적으로 제공되는 SQL 내장 함수에 대해 설명합니다. 내장함수 단일행 값이 입력되는 단일행 함수와 여러 행의 값이 입력되는 다중행 함수로 나뉩니다.다중행 함수는 다시 집계 함수, 그룹 함수, 윈도우 함수로 나뉩니다. 단일행 함수 단일행 함수의 종류는 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수가 있습니다. 문자형 함수 문자형 함수는 문자 데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수입니다. 문자형 함수 함수 설명 LOWER(문자열) 문자열의 알파벳 문자를 소문자로 바꾸어 준다. UPPER(문자열) 문자열의 알파벳 문자를 대문자로 바꾸어 준다. ASCII(문자) 문자나 숫..
WHERE 조건절의 개요자료를 검색할 때 SELECT 절과 FROM 절만을 사용하여 기본적인 SQL 문장을 구성한다면, 테이블에 있는 모든 자료가 출력되기 때문에실제로 원하는 자료를 확인하기 어렵습니다.따라서 WHERE 절을 사용하여 원하는 자료들로 결과를 제한할 수 있습니다.SELECT [DISTINCT/ALL] 컬럼명 [ALIAS명] FROM 테이블명 WHERE 조건식;WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성됩니다.1. 컬럼명 ( 보통 조건식의 좌측에 위치 )2. 비교 연산자3. 문자, 숫자, 표현식 ( 보통 조건식의 우측에 위치 )4. 비교 컬럼명 ( JOIN 사용 시) 연산자의 종류WHERE 절에 조건식을 사용할 때, 사용되는 연산자 입니다. 구분 연산자 의미 비..
TCL 이란? TRANSACTION CONTROL LANGUAGE 로 트랜잭션을 제어하는 언어입니다. 트랜잭션은 데이터베이스의 논리적 연산단위입니다.하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함되며 분할할 수 없는 최소의 단위입니다. 즉 ALL OR NOTHING 입니다. 트랜잭션 대상이 되는 SQL 문은 UPDATE, INSERT, DELETE 등 데이터를 수정하는 DML 문 입니다.SELECT 문장은 직접적인 트랜잭션 대상은 아니지만, SELECT FOR UPDATE 등 배타적 LOCK 을 요구하는 문장은 트랜잭션 대상이 될 수 있습니다. 트랜잭션의 특성 특성 설명 원자성 (Atomicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아있어야 한..
DML 이란? DATA MANIPULATION LANGUAGE 로 데이터 입력, 수정, 삭제, 조회 언어를 의미합니다. INSERT 테이블에 데이터를 입력하는 방법은 두 가지 유형이 있으며 한 번에 한 건만 입력됩니다.해당 칼럼명과 입력되어야 하는 값을 서로 1:1로 매핑해서 입력하면 됩니다.데이터 유형이 문자 유형일 경우 데이터를 ' ' 로 감쌉니다.INSERT INTO 테이블명 (COLUMN_LIST) VALUES (COLUMN_LIST 에 넣을 VALUE_LIST); INSERT INTO 테이블명 VALUES (전체 COLUMN 에 넣을 VALUE_LIST); UPDATE 입력한 정보 중에 잘못 입력되거나 변경이 발생하여 정보를 수정해야 하는 경우가 발생합니다.UPDATE 테이블명 SET 수정되어야..
DDL 이란? DATA DEFINITION LANGUAGE 로 데이터 정의 언어를 의미합니다. 데이터 유형 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준을 의미합니다. 테이블의 칼럼이 가지고 있는 대표적인 4가지 데이터 유형은 다음과 같습니다.1. CHARACTER : 고정 길이 문자열 정보2. VARCHAR : 가변길이 문자열 정보3. NUMERIC : 정수, 실수 등 숫자 정보4. DATE : 날짜와 시각 정보 이 외에도 Binary String Type, Binary Large Object String Type, National Character String Type, Boolean Type 등의 유형이 있습니다.벤더사별로 표준을 따르지만 이..
성능 데이터 모델링이란? 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 조인구조 등 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것을 의미합니다. 성능 데이터 모델링 고려사항 1. 정규화를 정확하게 수행한다.2. 데이터베이스 용량산정을 수행한다.3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.5. PK/FK 조정 등을 수행한다.6. 성능관점에서 데이터 모델을 검증한다. 정규화를 통한 성능향상 전략 기본적으로 데이터에 대한 중복성을 제거하여 주고 데이터가 관심사별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징을 지닙니다.엔터티가 늘어나므로 조인이 많이 발생하여 성능저하가 나타나는 경우도..
꽁담
'Database' 태그의 글 목록 (2 Page)