yaini
정리하는 습관
yaini
전체 방문자
오늘
어제
  • 분류 전체보기 (43)
    • CS (4)
    • Java (14)
      • build (1)
      • spring (6)
      • JPA (4)
    • Database (5)
      • MySQL (5)
    • Clean Code (11)
    • Devops (9)
      • CI (2)
      • CD (2)
      • AWS (4)
    • ETC (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • s3
  • exsits
  • 생성 패턴
  • java
  • 디자인 패턴
  • MySQL
  • Real MySQL 8.0
  • InnoDB
  • 자바
  • Hibernate
  • 데이터베이스
  • 계층형 아키텍처
  • ABAC
  • 레코드 수준 잠금
  • 구조 패턴
  • 만들면서 배우는 클린 아키텍처
  • Terraform
  • 디자인패턴
  • querydsl
  • JPA
  • database
  • 타겟 그룹
  • Spring
  • 격리 수준
  • AWS
  • Gradle
  • ORM
  • SQL
  • 구조패턴
  • 클린 아키텍처

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yaini

정리하는 습관

CS

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

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

 

반응형

'CS' 카테고리의 다른 글

[CS] 동기/비동기, 블록/논블록  (1) 2022.10.26
신입 개발자 면접 스터디 - OS  (0) 2021.06.07
신입 개발자 면접 스터디 - 자바  (0) 2021.05.31
    'CS' 카테고리의 다른 글
    • [CS] 동기/비동기, 블록/논블록
    • 신입 개발자 면접 스터디 - OS
    • 신입 개발자 면접 스터디 - 자바
    yaini
    yaini

    티스토리툴바