Database/개념

MVCC 란 ( Multi Version Concurrency Control ) 하나의 트랜잭션에서 데이터에 접근하는 경우 데이터의 다중버전 상태 중 보장되는 버전에 맞는 값을 반환하여 처리하는 방법을 의미합니다. 데이터의 다중버전 상태 아래의 단계를 설명하겠습니다. Step 1. a 에는 30이라는 데이터가 저장되어 있습니다. Step 3. 트랜잭션1에서 a 는 50 으로 데이터를 갱신했습니다. 이 값을 commit 하기 전입니다. Step 4. 트랜잭션2에서 a 는 30 으로 데이터가 조회됩니다. 트랜잭션1에서 데이터를 갱신했지만, 트랜잭션 2는 여전히 이전의 값을 조회하고 있습니다. 어떻게 조회할 수 있는것일까요? 데이터를 다중버전 상태로 유지하고 있어 commit 전까지는 이전의 값을 undo 영..
윈도우 함수 개요 기존 관계형 데이터베이스는 컬럼과 컬럼간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면,행과 행간의 관계를 정의하거나, 비교, 연산하는 것을 하나의 SQL 문으로 처리하는 것은 매우 어렵습니다. PL/SQL 같은 절차형 프로그램을 사용하거나, INLINE VIEW 를 이용해 복잡한 SQL 문을 작성해야 하던 것을 부분적이나마 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수입니다. 분석함수(ANALYTIC FUNCTION)나 순위함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터웨어하우스에서 발전한 기능입니다.윈도우 함수는 다른 함수와는 달리 중첩해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있습니다. 윈도우 함수의 종류 및 문법 윈도우 함..
ANSI/ISO SQL 표준에서 정의한 함수란? AGGREGATE FUNCTION GROUP AGGREGATE FUNCTION 이라고도 부릅니다.COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함됩니다. GROUP FUNCTION 집계함수를 제외하고, 소그룹 간의 소계를 계산하는 ROLLUP, GROUP BY 항목들간 다차원적인 소계를 계산하는 CUBE, 특정항목에 대한 소계를 계산하는 GROUPING SETS 함수가 있습니다. WINDOW FUNCTION 분석함수(ANALYTIC FUNCTION)나 순위함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터웨어하우스에서 발전된 기능입니다. ROLLUP 함수ROLLUP 에 지정된 Grouping Columns 의 Li..
서브쿼리란? 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다. 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다.2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다.3. 서브쿼리에서는 ORDER BY 를 사용하지 못한다. 서브쿼리가 사용 가능한 곳 1. SELECT 절2. FROM 절3. WHERE 절4. HAVING 절5. ORDER BY 절6. INSERT 문의 VALUES 절7. UPDATE 문의 SET 절 서브쿼리의 분류 단일 행 서브 쿼리 서브쿼리가 단일 행 비교 연산자(=, =, )와 함께 사용할 때는 서브쿼리의 결과 건수가 반드시 1건 이하여야 합니다.만약 결과가 2건 이상인 경우 오류가 발생합니다. 단일 행 쿼리의 예제만약 T2 테이블의 ..
계층형 질의 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의를 사용합니다.계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말합니다. ORACLE 의 계층형 질의 계층형 질의 문법SELECT FROM 테이블 WHERE condition AND condition ... START WITH condition CONNECT BY [NOCYCLE] condition AND condition ... [ORDER SIBLING BY column, column ...] 문법의 의미 구문 의미 START WITH 계층 구조 전개의 시작 위치를 지정하는 구문이다. 루트 데이터를 지정이다. CONNECT BY 다음에 전개될 자식 데이터를 지정하는 구문이다. 자식 데..
집합연산자 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중에 또 다른 방법이 있는데 집합연산자를 사용하는 방법입니다.집합 연산자는 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용합니다.집합 연산자를 사용하기 위해서는 SELECT 절의 컬럼 수가 동일하고, 동일 위치에 존재하는 컬럼의 데이터 타입이 상호 호환 가능해야 합니다. 집합 연산자의 종류 집합 연산자 연산자 의미 UNION 여러 개의 SQL 문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 출력 UNION ALL 여러 개의 SQL 문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시 INTERSECT 여러 개의 SQL 문의 결과에 대한 교집합으로 중복된 행은 하나의 행으로 출..
NL Join 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행합니다.선행 테이블의 조건을 만족하는 행을 추출하여 후행 테이블을 읽으면서 조인을 수행합니다. 이 작업은 선행 테이블의 조건을 만족하는 모든 행의 수만큼 반복 수행합니다.따라서 결과행의 수가 적은 테이블을 선행 테이블로 선택하는 것이 좋습니다. 작업 방법1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음2. 선행 테이블의 조인 키 값을 가지고 후행 테이블에서 조인 수행3. 선행 테이블의 조건을 만족하는 모든 행에 대해 1번 작업 반복 수행 그림으로 좀더 세분화합니다. 1. 선행 테이블에서 조건을 만족하는 첫 번째 행을 찾음2. 선행 테이블의 조인 키를 가지고 후행 테이블에 조인 키가 존재하는지 찾음3. 후행 테이블의 인덱..
인덱스 특징과 종류 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념입니다.인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조입니다. 그렇지만 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..
꽁담
'Database/개념' 카테고리의 글 목록