파게로그
정규화와 성능 본문
정규화의 문제점
- 정규화는 테이블 조회(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