CS

신입 개발자 면접 스터디 - DB

yaini 2021. 6. 10. 17:20
반응형

정규화

중복을 최소화하게 데이터를 구조화하는 과정

- 1차 정규화: 테이블의 모든 튜플들을 원자값으로 변환

- 2차 정규화: 기본키가 아닌 모든 속성이 기본 키에 완전 함수 종속

- 3차 정규화: 기본키 이외의 다른 컬럼이 그 외 다른 컬럼을 결정할 수 없는 것

 

키종류

후보키 - 튜플을 유잉ㄹ하게 식별할 수 있는 속성들의 부분 집합, 유일성과 최소성 만족

기본키 - 후보키 중에서 선택한 Main Key, 동일한 값이 중복될 수 없다.

대체키 - 후보키가 둘 이상일때, 기본키를 제외한 나머지 후보키

슈퍼키 - 속성들의 집합으로 구성 된 키, 유일성 만족, 최소성 불만족

외래키 - 참조되는 릴레이션의 기본키와 대응

 

트랜잭션

데이터 베이스의 상태를 변화시키는 논리적 작업 단위

Atomicity(원자성) - 트랜잭션의 연산은 모두 반영이 되거나 모두 반영이 되지 않아야 한다

Consistency(일관성) - 트랜잭션 실행 후 일관성 있는 데이터 베이스 상태여야 한다.

Isolation(독립성) - 둘 이상의 트랜잭션이 같이 연산할 수 없다.

Durability(영속성) - 트랜잭션의 결과는 시스템 고장에도 영구적으로 반영되어야 한다.

 

격리수준

READ UNCOMMITTED - 트랜잭션 실행 여부와 상관없이 값을 읽을 수 있음

READ COMMITED - 커밋이 완료된 값만 읽어옴, 커밋이 완료되지 않은 트랜잭션에선 undo 값을 읽어옴

REAPEATABLE READ - 트랜잭션마다 ID를 부여하고 ID보다 작은 트랜잭션 번호에서 변경한 것만 읽어옴

SERIALIZABLE - 가장 엄격한 격리수준이지만 처리 성능이 낮다

 

문제점

dirty read - 트랜잭션의 작업이 완료되었음에도 다른 트랜잭션에서 read

non-repeatable read - 하나의 트랜잭션 내에서 같은 데이터 조회시 항상 같은 결과를 가져와야 함

phatom read - 레코드가 추가되거나 삭제되는 현상

 

인덱스

- 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조

- 인덱스를 사용하지 않으면 Full Scan을 통해 전체 탐색을 해야하기 때문에 처리 속도가 떨어진다.

- DELETE, UPDATE 연산 시 기존 인덱스를 삭제하지 않고 사용하지 않음으로 처리하기 때문에

이러한 연산이 계속될 경우 비대해진 인덱스에 의해 성능이 저하된다.

 

참조

https://3months.tistory.com/193
https://yaboong.github.io/database/2018/03/09/database-normalization-1/
https://nesoy.github.io/articles/2019-05/Database-Transaction-isolation

 

반응형