트랜잭션 / 인덱스 / 뷰 / 클러스터

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이 빈번한 테이블

- 처리 범위가 넓어 문제가 발생하는 경우 단일 테이블 클러스터링 사용

- 조인이 많아 문제가 발생되는 경우는 다중 테이블 클러스터링 사용

 

*** 설계 시 고려사항

- 클러스터링 된 테이블은 조회 속도를 향상시켜주지만 입력,수정,삭제 시 성능이 저하됨

- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다

- 클러스터링 된 테이블에 클러스터드 인덱스를 생성하면 접근 성능 향상