전체 글

'DBA 업무'와 '알게되는 정보'를 기록하는 공간
큐 먼저 집어 넣은 데이터가 먼저 나오는 FIFO ( First In First Out ) 구조로 저장되는 형식을 말합니다.프린터의 출력, 키보드 입력 등 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에서 사용됩니다. 큐는 Put ( 삽입 ), Get ( 삭제 ) 를 이용하여 구현됩니다.Put 은 큐에 자료를 넣는 것을, Get 은 큐에서 자료를 꺼내는 것을 의미합니다.Front 와 Rear 은 데이터의 위치를 가르키며, Front 는 데이터를 Get 할 수 있는 위치, Rear 는 데이터를 Put 할 수 있는 위치를 의미합니다.큐가 가득차서 자료를 더이상 넣을 수 없는 경우를 오버플로우, 큐가 비어있어 자료를 꺼낼수 없는 경우를 언더플로우라고 합니다. 큐의 종류 및 작동방식 선형과 환형이..
삽입정렬 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입하는 방식입니다.배열이 길어질수록 효율이 떨어지지만, 구현이 간단합니다.시간복잡도는 O(n^2) 입니다. 삽입정렬 알고리즘 1. 두 번째 원소를 부분 리스트에서 적절한 위치에 삽입합니다.2. 세 번째 원소를 부분 리스트에서 적절한 위치에 삽입합니다.3. 위의 작업을 정렬이 끝날때까지 반복합니다. 삽입정렬 예제 25 를 앞의 리스트와 비교하여 적절한 위치에 삽입합니다.3125122211 253112221112 를 앞의 리스트와 비교하여 적절한 위치에 삽입합니다.2531122211 122531221122 를 앞의 리스트와 비교하여 적절한 위치에 삽입합니다.1225312211 122225311111..
선택정렬 첫번째 항목부터 최소값을 탐색하여 교환하며 정렬하는 방식입니다.n 개의 주어진 리스트를 정렬하는데 O(n^2) 만큼의 시간이 걸립니다. 선택정렬의 알고리즘 1. 주어진 리스트 중에 최소값을 찾습니다.2. 찾은 값을 맨 앞에 위치한 값과 교체합니다.3. 맨 처음 위치를 뺀 나머지를 같은 방법으로 교체합니다. 선택정렬의 예제 가장 작은값(0)을 찾은 뒤 가장 좌측값(9)와 교환합니다.9,1,6,8,4,3,2,0 0,1,6,8,4,3,2,9가장 작은 값(1) 을 찾은 뒤 가장 좌측에서 다음번의 위치와 교환합니다. (여기에서는 같은 값이므로 교환되지 않습니다.)0,1,6,8,4,3,2,9가장 작은 값(2) 를 찾은 뒤 그 다음의 좌측값(6)과 교환합니다.0,1,6,8,4,3,2,9 0,1,2,8,4,3..
버블정렬 두 인접한 원소를 검사하여 정렬하는 방법입니다.시간 복잡도가 O(n^2) 로 느리지만, 코드가 단순하여 사용하기 편리합니다. 버블정렬의 알고리즘 1. 앞에서 두 개의 원소를 비교합니다.2. 앞의 원소가 뒤의 원소보다 큰 경우 변경합니다. 작은 경우에는 변경하지 않습니다.3. 다음 위치의 두 개의 원소를 비교합니다.4. 위치의 끝까지 간 경우 다시 처음부터 비교합니다. 버블정렬의 예제 앞의 55 와 07 을 비교합니다. 07 이 55 보다 작으므로 위치를 변경합니다.55 07 78 12 42 07 55 78 12 4255 와 78 을 비교합니다. 55 가 작으므로 위치를 변경하지 않습니다.78 과 12 를 비교합니다. 12 가 작으므로 위치를 변경합니다.07 55 78 12 42 07 55 78 ..
퀵 정렬 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘입니다.n 개의 데이터를 정렬할 때 최악의 경우 O(n^2) 번의 비교를 수행하고 평균적으로 O(n log n)번의 비교를 수행합니다.정렬되지 않은 데이터들에 대해서 속도와 효율성이 가장 좋다고 할 수 있는 정렬 방식입니다. 퀵 정렬의 알고리즘 1. 리스트 가운데에서 하나의 원소를 선택합니다. 이 원소를 피벗 이라고 칭합니다.2. 피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눕니다. 이렇게 리스트를 둘로 나누는 것을 분할이라고 합니다. 분할은 마친 뒤에 피벗은 더이상 움직이지 않습니다.3. 분할된 두 개의 작은 리스트에 대해 재귀적으로 이 과정을 반복합니다...
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..
집계함수여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중햄 함수 중 집계 함수 입니다. 집계함수의 특성1. 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다.2. GROUP BY 절은 행들을 소그룹화 한다.3. SELECT, HAVING, ORDER BY 절에 사용할 수 있다. 집계함수의 종류 집계 함수 사용 목적 COUNT(*) NULL 값을 포함한 행의 수를 출력한다. COUNT(표현식) 표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력한다. SUM([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력한다. AVG([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 평균을 출력한다. MAX([DISTINCT | ..
꽁담
꽁담