DB 96

소트 수행 과정

메모리 공간 종류 1. 메모리 소트(in memory sort) : 전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것 2. 디스크 소트(to-dist sort) : 할당받은 sort area내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우 과정 [SGA] -> [PGA] -> [temp tablespace] --(merge)--> [PGA] 1. 소트할 대상 집합을 SGA버퍼캐시를 통해 읽어들인다. 2. sort area에서 정렬을 시도한다. 3. 양이 많을 때는 정렬된 중간집합을 temp 태이블스페이스에 임시 세그먼트로 저장한다. 4. 최종 결과집합을 얻기 위해 merge한다

DB/SQL 2022.08.15

인덱스 엑세스 조건, 인덱스 필터 조건

인덱스 엑세스 조건 - 인덱스 스캔 범위를 결정하는 조건절 - 수직적 탐색을 통해 스캔 시작점을 결정하는 데 영향을 미치는 조건절 - 또한 인덱스 리프 블록을 스캔하다가 어디서 멈출지 결정하는데 영향을 미치는 조건절 - 첫번째 범위검색 조건절 이전까지 조건절이 인덱스 엑세스 조건이다 인덱스 필터 조건 - 테이블로 엑세스를 할지 결정하는 조건절 - 첫번째 범위검색 조건절 이후부터가 인덱스 필터 조건이다 그림

DB/SQL 2022.08.11

인덱스 탐색과정

인덱스 탐색과정 - 인덱스 tree가 위와 같고, 조건절이 where c1='B' and c2=3이라고 가정하자 - 루트 블록에서 조건에 맞는건 (B,3)이지만 그 직전 데이터인 (A,3)의 리프블록에서 부터 스캔을 시작 해야 조건에 맞는 모든 데이터를 찾을 수 있다. - 스캔시작구간은 리프블록2의 네번째 데이터(B,3), 종료구간은 리프블록3의 두번째(B,3) - 루트블록속 데이터들의 하위블록들은, 루트블록속 데이터들보다 항상 크거나 같다. - 루트블록속 가장 왼쪽 레코드를 LMC(LeftMost Child)라고 한다.

DB/SQL 2022.08.11

인덱스 손익 분기점

인덱스 손익 분기점이란 - index range scan이 table full scan보다 느려지는 시점 - table full scan은 추출 건수와 상관없이 어차피 테이블을 전체 스캔하는 것이기 때문에 소요 시간이 항상 같다 - index range scan은 추출 건수가 많아짐에 따라 소요시간이 늘어난다.(인덱스 스캔 + 테이블 랜덤 엑세스, 테이블 랜덤엑세스로 인한 시간 소요가 주요원인) - 이때 CF(clustering factor)가 나쁘면 손익분기점이 빨리 오고, 좋으면 손익분기점이 늦게 온다

DB/SQL 2022.08.10

인덱스 스캔 종류

index range scan - 루트 인덱스에서 리프 블록까지 수직적으로 탐색 후 필요한 범위만 스캔하는 것 - 선두 칼럼을 가공하지 않은 상태로 조건절에 사용해야 함(그렇지 않으면 인덱스를 타지 않음) index full scan * 모든 인덱스를 수평적으로 탐색 * table full scan과 비교시 - 테이블면적이 크면 table full scan이 시간이 많이 걸리므로 index full scan이 유리 - 찾는 개수가 많으면 테이블 엑세스가 많아지므로 애초부터 table full scan이 유리 index unique scan - "=" 조건으로 탐색하는 경우에 작동 index skip scan - 다중 조건에서 첫번째 조건으로 skip할 수 있는 구간을 skip하며 찾는것 - 선두 칼..

DB/SQL 2022.08.08

인덱스 수직적 탐색과 수평적 탐색

수직적 탐색과 수평적 탐색 수직적 탐색 - 정렬된 인덱스 레코드 중 조건을 만족하는 첫 번째 레코드를 찾는 과정 - 즉 인덱스 스캔 시작지점을 찾는 과정 - 루트 노드부터 시작해서 아래로 내려온다 수평적 탐색 - 수직적 탐색 후 찾고자 하는 데이터가 더 나타나지 않을 때 까지 인덱스 리프 블록을 수평적으로 스캔 - 인덱스 리프 블록끼리는 서로 앞뒤 블록에 대한 주소값을 갖음 (double linked list 구조) - 인덱스 스킨을 끝낸 후 테이블 스캔을 하기 위해 ROWID를 얻는다.

DB/SQL 2022.08.08

NoSQL

NoSQL이란 - 기존의 관계형 데이터베이스의 한게를 벗어나 비정형, 초고용량 데이터 처리를 위해 만들어짐 - 쓰기속도에 중점을 둠 - 다수 서버에 데이터 복제,분산,저장 등 수평적 확장이 가능 NoSQL특징 1. 대용량 데이터 처리 : 페타바이터 수준의 데이터 처리 수용 가능 2. 유연한 스키마 사용 3. 저렴한 클러스터 구성 : 다수 서버를 통한 수평적인 확장 및 데이터 복제 및 분산 저장 가능 4. 높은 가용성 제공 5. 탄력성 : 시스템 일부 장애에도 불구하고 시스템에 접근하는 클라이언트, 응용시스템의 다운타임이 없도록 함 6. 질의가능 : 수십 대에서 수천 대 규모로 구성된 시스템에서도 데이터의 특성에 맞게 효율적으로 데이터를 검색/처리 할 수 있음 7. 높은 확장성 NoSQL종류 1. Key-..

DB/[이론] 2022.03.11

ETL (Operational Data Store, Data WareHouse, Data Mart)

ETL 1. 단어뜻 ETL : extraction, Transformation, Loading (데이터의 이동 및 변환) 2. 과정 Operational Data Store(ODS) => Data WareHouse(DW) => Data Mart 3. 정의 데이터에 대한 추가 작업을 위해 다양한 데이터 원천(source)들로 부터 데이터를 추출, 통합한 데이터베이스. 실시간, 실시간 근접, 원자성을 지닌 하위수준 데이터 저장을 위해 설계 4. 단계 (1) 인터페이스 : 다양한 데이터 원천들로부터 데이터를 획득하는 단계. 실시간 근접실시간, OLAP질의를 지원하기 위해 실시간 데이터 복제 기술 사용 (2) 데이터 스태이징 : 트래잭션 데이터들이 추출되어 하나 이상의 스태이징 테이블에 저장되는 단계 (3) 데..

DB/[이론] 2022.03.11

데이터베이스 장애 복구 방법

로그기반 기법 - 로그파일을 이용한 복구 - redo, undo사용 - 느림 검사점(check point) - 로그파일과 검사점을 이용한 복구 - 로그기반보다 상대적으로 복구속도가 빠름 - undo 사용 그림자 페이징 기법 - 그림자 페이지 테이블을 이용한 복구 - undo간단, redo불필요 - 로그 기반 or 검사점 기반과 함께 사용 - 그림자 페이지 테이블 복사, 기록하는데 따른 오버헤드 발생 - 복사 및 백업본에서 복구하므로 복구 속도가 빠름

DB/[이론] 2022.03.10

데이터 복구

데이터복구란? 데이터베이스 운영 도중 예기치 못한 장애가 발생할 경우 데이터베이스 장애 발생 이전으로 일관성과 무결성을 복원하는것 데이터베이스 장애 유형 1. 트랜젝션 장애 - 논리적 오류 : 내부적은 오류로 트랜젝션 완료 불가 - 시스템 오류 : Deadlock 등의 오류 조건으로 활성 트랜잭션을 강제로 종료 2. 시스템 장애 - 전원, 하드웨어, 소프트웨어 등의 고장 - 시스템 장애로 인해 저장 내용이 영향 받지 않도록 무결성 체크 3. 디스크 장애 - 디스크 스토리지의 일부 또는 전체가 붕괴 - 가장 최근의 덤프와 로그를 이용하여 덤프 이후에 완결된 트랜젝션을 재실행 4. 사용자 장애 - 사용자들의 데이터베이스에 대한 이해 부족으로 발생 - DBA가 데이터베이스를 관리하다 발생하는 실수 데이터베..

DB/[이론] 2022.03.10

교착상태

교착상태(Deadlock) 정의 - 다중 트랜잭션 데이터베이스 시스템에서 다수 트랜젝션이 특정 자원의 할당을 무한정 기다리고 있는 상태 - 교착 상태에 있는 트랜젝션은 실행을 끝낼 수 없으며 시스템 자원이 묶여있어서 다른 작업을 시작하는것도 불가능. - 예시 : T1은 T2가 X를 언락하기를 기다리고, T2는 T1이 Y를 언락 하기를 기다리고 있는 상황 교착상태 발생 원인 - 상호 배제 : 프로세스들이 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용하지 못함 - 점유와 대기 : 프로세스가 어떤 자원을 할당받아 점유하고 있으면서 다른 자원을 요구 - 비선점 : 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없으며 점유하고 있는 프로세스 자신만 해제가능 - 환형대기 : 프로세스..

DB/[이론] 2022.03.10

동시성 제어

동시성 제어란 - 다중 사용자 환경을 지원하는 데이터베이스 시스템에 여러 트랜젝션들이 성공적으로 동시에 실행될 수 있도록 하는것 - 트랜젝션의 직렬화를 수행(트랜젝션이 동시에 수행되더라도 그 결과가 순차적으로 수행되도록 만듦) - 무결성보장, 공유도 최대, 응답시간 최소, 시스템 활동의 최대 보장 동시성 제어 하지 않을 경우 문제점 - 갱신 손실 : 이전 트렌젝션이 종료하기 전에 다른 트랜젝션이 갱신 값을 덮어 쓰는 경우 - 오손 데이터 읽기 : 트랜젝션의 중간 수행결과를 다른 트랜잭션이 참조 - 모순성 : DB가 일관성이 없는 상태로 남음 - 연쇄복귀 : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소불가능 - 반복할 수 없는 읽기 : ..

DB/[이론] 2022.03.10

정규화 수행과정 #도부이결다조

정규화 수행과정 -1차 정규화 : 원자값 아닌 도메인 분해(도) -2차 정규화 : 부분 함수 종속 제거(부) -3차정규화 : 이행함수종속 제거(이) -보이스-코드 정규화 : 결정자가 후보키가 아닌 것 제거(결) -4차정규화 : 다치종속 제거(다) -5차정규화 : 조인종속 제거(조) 1차 정규화 - 하나의 컬럼에 원자값을 갖도록 조정 - 예시 2차 정규화 - 부분함수 종속 제거 - 기본키의 일부가 다른 컬럼과 종속 - 예시 3차 정규화 - 이행함수 종속 - 예시 - 물론 학번->학부->등록금을 거치지 않고도, 등록금은 학부에 종속된다(학번에을 알면 해당 학생의 등록금을 무조건 알 수 있기 때문이다.) 하지만 의미적으로 등록금은 학부에 종속적으로 결정되는 것이 맞다. 따라서 이를 분리해 주어야 하는 것이다...

DB/[이론] 2022.03.05