🧩 1. 트랜잭션 & 락 (ACID / 격리 수준 / 동시성 문제)

구분 설명 대표 예시

Atomicity 트랜잭션은 전부 수행되거나 전혀 수행되지 않아야 함 예: 중간 실패 시 전체 롤백
Consistency 트랜잭션 전후에 데이터 무결성 유지 FK/PK 제약조건 유지 등
Isolation 다른 트랜잭션 간 영향 차단 격리 수준 설정으로 구현
Durability COMMIT된 결과는 영구히 유지 시스템 장애 후에도 보존

 

 

 

트랜잭션 격리 수준 (낮 → 높):

  • READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ → SERIALIZABLE

 

 

동시성 이슈:

유형 설명

Dirty Read 다른 트랜잭션의 미확정값을 읽음
Non-repeatable Read 같은 행을 반복 조회 시 값이 바뀜
Phantom Read 조건에 맞는 새로운 행이 중간에 삽입됨

 

 

 

 


 

 

🔒 락 (Lock) 전략

종류 설명

낙관적 락 충돌 적다고 가정, 버전 비교 후 충돌 시 롤백
비관적 락 충돌 가능성 높음, SELECT ... FOR UPDATE 사용

 

 

 

 

🧮 2. 실행계획 (EXPLAIN) & 인덱스 활용

항목 설명

EXPLAIN SQL의 실행 순서, 인덱스 사용 여부 확인
인덱스 검색 속도 개선 도구, B-Tree 기본
사용 시기 자주 검색, 정렬, 조인되는 컬럼
피해야 할 패턴 함수 사용 (WHERE YEAR(date)=2024), 연산 포함된 조건 등

 

 

 

⚙️ 3. DDL vs DML, 제약조건

항목 설명 자동 COMMIT ROLLBACK

CREATE / DROP / ALTER (DDL) 구조 변경 O X
INSERT / UPDATE / DELETE (DML) 데이터 조작 X O
TRUNCATE 모든 행 삭제 (구조 유지) O X

 

 

 

제약조건 키워드 요약

제약 설명

PRIMARY KEY 고유 + NOT NULL
UNIQUE 중복 X, NULL 허용
NOT NULL 반드시 값 필요
FOREIGN KEY 참조 무결성 유지
CHECK 조건 만족 필요

+ Recent posts