파게로그

정규화와 성능 본문

콤퓨타 왕기초/SQLD/JDBC/Oracle DB

정규화와 성능

파게 2021. 3. 16. 01:06

정규화의 문제점

  • 정규화는 테이블 조회(SELECT) 시에 join을 유발하여 CPU, 메모리의 사용량을 높인다.
  • 예시
    - 직원(PK: 사원번호 / 이름), 부서(PK: 부서코드 / 부서명)
    - SELECT 사원코드, 부서코드, 부서명, 이름 FROM 직원, 부서 WHERE 직원.부서코드 = 부서.부서코드;
    - SELECT 사원코드, 부서코드, 부서명, 이름 FROM 직원 INNER JOIN 부서 ON 직원.부서코드 = 부서.부서코드;
  • 이론상 부서 테이블의 건수 M * 직원 테이블의 건수 N의 시간복잡도
  • 실제로는 인덱스와 옵티마이저 덕분에 위와 같은 비효율이 발생하지는 않음
  • 반정규화(de-normarlization)을 통해 하나의 테이블에 저장함으로써 성능 저하 해결

정규화를 사용한 성능 튜닝

  • 반정규화는 데이터 중복이라는 또 다른 문제점을 발생시킴
  • 칼럼의 증가를 통해 빠른 조회 가능
  • 칼럼이 너무 많으면 DBMS의 입출력 단위인 블록의 크기(block size)를 넘어서게 됨.
    그 결과 한 행을 읽기 위해 여러 개의 블록을 읽어야 함.
    이는 디스크 I/O를 증가시켜 성능을 저하시킴.

즉 정규화는 입출력 데이터의 양을 줄여 성능을 향상시킴

'콤퓨타 왕기초 > SQLD/JDBC/Oracle DB' 카테고리의 다른 글

분산 데이터베이스  (0) 2021.03.16
반정규화(de-normalization)  (0) 2021.03.16
정규화(normalization)  (0) 2021.03.16
엔티티 식별자(entity identifier)  (0) 2021.03.15
관계(relationship)  (0) 2021.03.15
Comments