ddl, mml, 역정규화

chaewon·2025년 6월 2일

SQL에서 DDL과 DML의 차이점

SQL에서는 데이터를 정의하고 조작하는 다양한 명령어들이 존재한다. 이 명령어들은 크게 DDL과 DML로 나눌 수 있다.

DDL (Data Definition Language)

DDL은 데이터 구조를 정의하거나 변경할 때 사용하는 언어

대표적인 DDL 명령어와 용도

  • CREATE: 테이블, 데이터베이스, 뷰 등을 새로 생성할 때 사용
  • ALTER: 기존 객체(테이블 등)의 구조를 변경할 때 사용
  • DROP: 객체를 삭제할 때 사용
  • TRUNCATE: 테이블의 모든 데이터를 빠르게 삭제 (구조는 유지)

⚠️ 참고: DDL은 실행 즉시 자동 커밋

DML (Data Manipulation Language)

DML은 데이터를 실제로 다루는 작업을 담당

대표적인 DML 명령어와 용도

  • SELECT: 데이터를 조회할 때 사용
  • INSERT: 새로운 데이터를 추가할 때 사용
  • UPDATE: 기존 데이터를 수정할 때 사용
  • DELETE: 데이터를 삭제할 때 사용

💡 DML은 트랜잭션을 지원하기 때문에 COMMIT, ROLLBACK과 함께 쓰는 경우가 많음


역정규화가 필요한 상황과 고려사항

정규화는 데이터 중복을 줄이고 무결성을 높이기 위해 필요한 과정이다.
실제 운영 환경에서는 역정규화를 쓸 수도 있다.
📌 역정규화(denormalization)란?

정규화를 통해 나눠놓은 테이블을 다시 합치거나, 중복 데이터를 일부러 추가해서 조회 성능을 높이는 것.
데이터 중복을 감수하고, 조인 없이 빠르게 데이터를 읽기 위한 목적.


역정규화와 정규화

  • 정규화: 데이터 중복 제거 + 무결성 중심
  • 역정규화: 조회 성능 중심

정규화된 구조

-- 사용자 테이블
CREATE TABLE users (
  user_id INT PRIMARY KEY,
  username VARCHAR(100)
);

-- 주문 테이블
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT,
  product_name VARCHAR(100),
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- 사용자 이름과 함께 주문 조회 (JOIN 필요)
SELECT o.order_id, u.username, o.product_name
FROM orders o
JOIN users u ON o.user_id = u.user_id;

→ 조인 필요함. 성능 이슈 발생 가능


역정규화된 구조

-- 역정규화된 주문 테이블 (중복 허용)
CREATE TABLE orders_denorm (
  order_id INT PRIMARY KEY,
  user_id INT,
  username VARCHAR(100), -- 사용자 이름 중복 저장
  product_name VARCHAR(100)
);

-- 바로 조회 가능 (JOIN 없음)
SELECT order_id, username, product_name
FROM orders_denorm;

→ 조회 속도 빠름. 하지만 데이터 중복 생김


역정규화 시 고려할 점

  • 사용자 이름이 바뀌면 중복된 모든 행을 업데이트해야 함
-- 정규화된 경우
UPDATE users SET username = '새이름' WHERE user_id = 1;

-- 역정규화된 경우
UPDATE orders_denorm SET username = '새이름' WHERE user_id = 1;
  • 무결성 유지 어려워짐
  • 데이터 일관성 깨질 수 있음

역정규화 고려 상황 정리

  • 조인이 너무 많아질 때 → 성능 저하 유발
  • 조회 성능이 중요할 때 → 실시간 처리 속도 개선이 필요할 때
  • 데이터를 자주 같이 조회할 때 → 테이블 분리가 오히려 불편할 때

역정규화할 때 고려할 점

  • 데이터 중복으로 인해 무결성 유지가 어려워질 수 있음
  • 데이터 변경 작업(INSERT, UPDATE, DELETE)이 복잡해질 수 있음
  • 정규화/역정규화 균형이 중요함. 극단적으로 가지 않도록 주의

장단점

장점단점
조회 속도 향상데이터 중복 증가
조인 연산 감소무결성 제약 어려움
시스템 부담 완화유지보수 복잡도 증가

성능이 중요할 땐 역정규화 전략을 고려할 수 있다.

0개의 댓글