2023. 2. 19. 19:21ㆍ정처기 필기/3과목 - 데이터베이스 구축
트랜잭션
1. 트랜잭션의 정의
- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
- 한꺼번에 모두 수행되어야 할 일련의 연산들
- COMMIT과 ROLLBACK에 의해 보장 받는 트랜잭션 특징 --> 원자성
- SAVEPOINT(=CHECKPOINT) : 롤백할 위치를 지정하는 명령어, 여러개 가능
2. 트랜잭션의 특징
특징 | |
원자성 (Atomicity) | 트랜잭션 연산을 db에 모두 반영하든지 전혀 반영하지 않든지 해야 함 |
일관성 (Consistency) | 커밋 시 일관성 있는 데이터베이스 상태를 유지 |
독립성 (Isolation) | 두 개의 트랜잭션 불가 |
영속성 (Durability) | 성공적으로 완료된 트랜잭션은 영구적으로 반영됨. |
3. CURD 매트릭스
- Create, Update, Delete, Read (C D U R 우선순위 적용)
- 테이블 ,프로세스에 CURD가 모두 없는 경우
- 테이블에 C 또는 R이 없는 경우 ( 프로세스는 하나만 있어도 돌아간다 )
인덱스
1. 인덱스의 개념 및 선정기준, 고려사항
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터>로 구성된 데이터
* 인덱스 컬럼 선정
- 분포도(Selectivity)가 10~15% 이내인 컬럼
- 수정이 빈번하지 않는 컬럼
- ORDER BY, GROUP BY, UNION 이 빈번한 컬럼
- 분포도가 좋은 컬럼은 단독 인덱스로 생성
- 인덱스들이 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성
* 설계 시 고려사항
- 새로 추가되는 인덱스는 기존 엑세스 경로에 영향을 미칠 수 있음
- 지나치게 많은 인덱스는 오버헤드 발생
- 넓은 범위 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킴.
- 인덱스만의 추가적인 저장 공간 필요
- 인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계
2. 인덱스 종류
- 클러스터드 인덱스 / 넌클러스터드 인덱스
- 트리 기반 인덱스
- 비트맵 인덱스
- 함수 기반 인덱스
- 비트맵 조인 인덱스
- 도메인 인덱스
뷰
1. 뷰의 개요 및 특징
- 기본 테이블로부터 유도된, 가장 테이블로 기본 테이블과 같은 형태의 구조를 띤다. 조작도 비슷하다
- 가상 테이블이라 마치 사용자에게 있는것처럼 간주된다 (저장장치 내에 논리적으로 존재)
- 정의된 뷰로 다른 뷰를 정의할 수 있다.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
속성 | 설명 |
REPLACE | 뷰가 이미 존재하는 경우 재생성 |
FORCE | 본 테이블의 존재 여부에 관계 없이 뷰 생성 |
NOFORCE | 기본 테이블이 존재할 때만 뷰 생성 |
WITH CHECK OPTION | 서브 쿼리 내의 조건을 만족하는 행만 변경 |
WITH READ ONLY | 데이터 조작어(DML) 작업 불가 |
2. 뷰의 장,단점
* 장점
- 논리적 데이터 독립성 제공
- 접근 제어를 통한 자동 보안 제공
- 사용자 데이터 관리 용이
* 단점
- 독립적인 인덱스를 가질 수 없다
- 뷰의 정의를 ALTER로 변경 x --> DROP하고 CREATE해야 한다.
- 삽입,삭제,갱신,연산에 제약이 있다.
클러스터
1. 클러스터의 개요 및 특징
- 데이터 저장 시 데이터 엑세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 인덱스의 단점을 해결한 기법 --> 분포도가 넓을수록 오히려 유리
- 분포도가 넓은 테이블의 클러스터링은 저장 공간 절약의 가능
- 대량의 범위를 자주 조회하는 경우 적용
- 인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용
2. 클러스터의 선정기준 및 고려사항
* 클러스터형 인덱스(Clustered Index)는 사전에서 가나다 순으로 찾기 좋게 정렬되어 있고, 책의 모서리에 ㄱ, ㄴ, ㄷ 이런 표시를 이용해서 찾을 수 있는 방식과 유사합니다.
* 논 클러스터형 인덱스(Non-Clustered Index)라고도 불리는 보조 인덱스는 책의 <목차>나 <찾아보기> 페이지를 펴서 원하는 내용의 페이지를 확인할 수 있는 방식과 유사합니다.
즉, 실제 데이터 페이지는 건드리지 않고 인덱스를 기반으로 정렬된 새로운 저장소를 만듭니다. 그 후에 저장소에서 인덱스를 가지고 탐색할 데이터의 주소를 알아낸 후에, 그 주소를 사용해서 실제 데이터에 접근하게 됩니다.
***클러스터 테이블 선정
- 수정이 빈번하지 않은 테이블
- ORDER BY, GROUP BY, UNION이 빈번한 테이블
- 처리 범위가 넓어 문제가 발생하는 경우 단일 테이블 클러스터링 사용
- 조인이 많아 문제가 발생되는 경우는 다중 테이블 클러스터링 사용
*** 설계 시 고려사항
- 클러스터링 된 테이블은 조회 속도를 향상시켜주지만 입력,수정,삭제 시 성능이 저하됨
- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다
- 클러스터링 된 테이블에 클러스터드 인덱스를 생성하면 접근 성능 향상
'정처기 필기 > 3과목 - 데이터베이스 구축' 카테고리의 다른 글
데이터베이스 보안 / 스토리지 / 논리 데이터 모델의 물리 데이터 모델 변환 및 품질 검토 (0) | 2023.02.19 |
---|---|
분산 데이터베이스 설계 / 데이터베이스 이중화 / 서버 클러스터링 (0) | 2023.02.19 |
시스템 카탈로그 / 데이터베이스 저장 공간 설계 (0) | 2023.02.19 |
관계대수 및 관계해석 / 정규화 및 반정규화 (0) | 2023.02.19 |
관계형 데이터베이스의 구조 / 키(KEY) / 무결성 (0) | 2023.02.19 |