본문 바로가기

STUDY

[면준] DBA 면접 질문 준비

1️⃣ 기술 면접 (DBA 핵심 질문)

📌 데이터베이스 기본 개념

1. RDBMS와 NoSQL의 차이점은 무엇인가요?

답변:
RDBMS(관계형 데이터베이스)는 정형 데이터를 테이블 기반으로 저장하며, SQL을 사용하여 데이터를 조회합니다.

  • 대표적인 예: MySQL, PostgreSQL, Oracle, SQL Server
  • ACID(Atomicity, Consistency, Isolation, Durability) 속성을 준수하여 데이터 무결성을 보장함.

반면, NoSQL은 비정형 데이터 저장에 적합하며 수평 확장이 용이한 구조입니다.

  • 대표적인 예: MongoDB, Redis, Cassandra
  • 트랜잭션보다는 고속 데이터 처리유연한 스키마를 지원하는 것이 강점입니다.

2. 인덱스(Index)란 무엇이며, 어떻게 성능 최적화에 기여하나요?

답변:
인덱스는 데이터 조회 속도를 향상시키기 위한 자료 구조입니다.

  • 예시: 도서관에서 책 제목순으로 정리된 목록(색인)을 이용하면 빠르게 원하는 책을 찾을 수 있음.
  • 종류: B-Tree Index, Hash Index, Full-text Index, Bitmap Index 등이 있음.
  • 장점: SELECT 쿼리 성능을 대폭 개선 가능.
  • 단점: 데이터 삽입/삭제 시 인덱스 업데이트 비용이 발생하여 성능 저하 가능.

3. 트랜잭션(Transaction)이란 무엇이며, ACID 원칙을 설명해주세요.

답변:
트랜잭션은 데이터베이스에서 하나의 논리적인 작업 단위이며, 모든 연산이 성공해야만 커밋(commit)되는 특성을 가집니다.

💡 ACID 원칙

  1. Atomicity (원자성) → 트랜잭션은 모두 수행되거나, 전혀 수행되지 않음
  2. Consistency (일관성) → 트랜잭션 완료 후 데이터는 일관된 상태 유지
  3. Isolation (고립성) → 여러 트랜잭션이 동시에 수행되더라도 서로 간섭하지 않음
  4. Durability (지속성) → 트랜잭션이 완료되면 영구적으로 반영됨

📌 정규화(Normalization) 면접 답변 (짧고 명확하게!)

✅ 질문: 정규화란 무엇이며, 장단점은 무엇인가요?

답변:
정규화(Normalization)는 데이터베이스에서 중복을 최소화하고, 데이터 무결성을 보장하기 위해 테이블을 분리하는 과정입니다.

💡 정규화 단계:

  • 1NF (제1정규형): 컬럼 값이 원자적으로 분리됨 (배열 같은 값 제거).
  • 2NF (제2정규형): 부분 함수 종속 제거 (기본 키의 일부에만 종속된 속성 분리).
  • 3NF (제3정규형): 이행적 종속 제거 (A → B, B → C 구조 제거).
  • BCNF: 모든 결정자가 후보 키가 되도록 보장.

💡 정규화 장단점:
장점: 데이터 중복 최소화, 데이터 무결성 유지, 삽입·삭제 이상 방지.
단점: JOIN 연산 증가로 조회 성능 저하, 데이터 구조가 복잡해짐.

📌 MySQL vs PostgreSQL 차이점 & 장점 (초간단 면접 답변)

MySQL속도와 성능 최적화에 강점이 있는 RDBMS이며,
PostgreSQL확장성과 복잡한 쿼리 최적화에 강한 RDBMS입니다.

💡 주요 차이점

  • MySQL: 빠른 읽기 성능, 쉬운 사용, Master-Slave 복제 강점
  • PostgreSQL: 강력한 트랜잭션 처리(ACID 완벽 지원), 복잡한 쿼리 최적화, JSONB 지원

📌 결론:

  • 빠른 속도 & 웹 서비스용이면 MySQL
  • 복잡한 데이터 처리 & 금융권이면 PostgreSQL

- 관계형 데이터베이스에서 Primary Key와 Foreign Key의 차이점은?

- 뷰(View)란 무엇이며, 언제 사용하나요?

 

📌 SQL 및 성능 최적화

4. SQL 실행 계획(Execution Plan)을 분석하는 방법과 활용법은?

답변:
SQL 실행 계획이란 쿼리 실행 과정과 옵티마이저(Optimizer)가 선택한 실행 경로를 보여주는 도구입니다.

  • EXPLAIN 명령어를 사용하여 실행 계획을 확인할 수 있음.
  • 실행 계획에서 중요한 요소:
    • Index Scan vs Table Scan → 인덱스 활용 여부 확인
    • Join Order & Type → 조인의 효율성 분석
    • Filter Condition → 불필요한 WHERE 절 조건 확인

📌 추가: 실행 계획을 분석하여 쿼리 튜닝(인덱스 최적화, 조인 방식 변경, 서브쿼리 제거 등)을 수행할 수 있음.

 

5. 조인(Join) 종류와 각각의 차이점은?

답변:
SQL에서 여러 테이블을 연결하여 데이터를 조회할 때 사용하는 연산

  • INNER JOIN → 두 테이블에서 일치하는 데이터만 반환
  • LEFT JOIN → 왼쪽 테이블은 모두 유지, 오른쪽 테이블에서 일치하는 데이터만 반환
  • RIGHT JOIN → 오른쪽 테이블은 모두 유지, 왼쪽 테이블에서 일치하는 데이터만 반환
  • FULL OUTER JOIN두 테이블의 모든 데이터 반환 (MySQL 미지원)

6. 대용량 데이터를 조회할 때 최적화하는 방법은?

답변:

  1. 적절한 인덱스 활용 (Clustered Index, Composite Index)
  2. Partitioning (파티셔닝) 적용하여 데이터 분할
  3. LIMIT 사용하여 불필요한 데이터 조회 방지
  4. JOIN 최적화 (Nested Loop 대신 Hash Join 활용)
  5. 서브쿼리 대신 CTE(Common Table Expression) 사용
  6. 실행 계획(Execution Plan) 분석 후 최적화

- 인덱스를 사용할 때 성능이 오히려 저하될 수 있는 상황은?
- 서브쿼리(Subquery)와 조인(Join)의 차이점 및 언제 사용해야 하는지?
- Group By와 Having의 차이점은?
- 데이터 중복을 제거하는 방법(DISTINCT vs GROUP BY)?

 

📌 데이터 백업 및 보안

 

- 데이터베이스 백업 방식(Full, Incremental, Differential)을 설명해주세요.
- 데이터 복구(Recovery) 전략에는 어떤 것들이 있나요?
- 데이터 무결성을 유지하는 방법은?
- 트랜잭션 로그(Transaction Log)의 역할과 활용법은?
- 사용자 접근 권한을 관리하는 방법은?

 

📌 장애 대응 및 실무 경험

7. 데이터베이스 장애가 발생하면 어떻게 대응할 것인가?

답변:

  1. 장애 유형 파악 → CPU/메모리/디스크 과부하, Lock/Deadlock, 네트워크 문제 등
  2. 로그 분석 → MySQL SHOW PROCESSLIST, EXPLAIN ANALYZE 활용
  3. 즉각적인 해결 → 긴급 쿼리 중단, 트랜잭션 롤백, 복구 작업 수행
  4. 장기적인 개선책 마련 → 성능 튜닝, 인덱스 최적화, 하드웨어 업그레이드 등

8. MySQL에서 Deadlock이 발생하는 원인과 해결 방법은?

답변:
Deadlock(교착 상태)은 서로 다른 트랜잭션이 동일한 리소스를 점유하고 있어 영원히 대기하는 상태
📌 원인:

  • 트랜잭션이 여러 테이블을 다른 순서로 잠금(Locking)
  • 한 트랜잭션이 완료되지 않았는데 다른 트랜잭션이 동일한 자원을 점유
  • 인덱스 미사용으로 인해 테이블 Lock 증가

📌 해결 방법:

  1. 트랜잭션 실행 순서 조정
  2. 락 타임아웃(innodb_lock_wait_timeout) 설정
  3. 적절한 인덱스 활용하여 Locking 최소화
  4. 트랜잭션 크기를 작게 유지하여 Lock 지속 시간 줄이기

- 대량의 데이터를 처리하는 과정에서 성능 문제가 발생한 적이 있나요? 어떻게 해결했나요?
- 데이터베이스 성능 튜닝을 수행한 경험이 있다면 설명해주세요.
- DB 성능 개선을 위한 Query 튜닝 경험이 있나요?
- 만약 실시간 서비스에서 DB가 다운되었다면, 가장 먼저 확인해야 할 사항은?
- 데이터베이스 마이그레이션(Migration) 경험이 있나요?


2️⃣ 실무 및 협업 관련 질문

  1. DBA와 개발자(Backend, Data Engineer) 간의 협업 경험이 있나요?
  2. DBA의 역할이 개발팀, 인프라팀과 어떻게 연결된다고 생각하나요?
  3. 데이터 모델링을 진행할 때 가장 중요하게 고려해야 할 점은?
  4. 대규모 트래픽을 처리할 수 있도록 DB를 설계해야 한다면 어떤 방식을 적용할 수 있을까요?
  5. 모니터링 및 로그 분석 경험이 있나요? 어떤 도구를 사용해봤나요?

4️⃣ 인성 및 상황 질문

  1. 본인의 장점과 단점은 무엇인가요?
  2. 이전 직무(경험)와 DBA가 어떻게 연결된다고 생각하나요?
  3. 프로젝트에서 팀원과 의견이 충돌했던 경험이 있나요? 어떻게 해결했나요?
  4. 실무에서 예상치 못한 문제가 발생했을 때 어떻게 대처했나요?
  5. DBA 업무에서 가장 중요하다고 생각하는 요소는 무엇인가요?
  6. 빠르게 변화하는 IT 환경에서 DBA가 어떻게 적응해야 한다고 생각하나요?
  7. 데이터베이스 장애가 심각한 상황이라면 어떻게 우선순위를 정해서 대응하나요?
  8. 개발자가 비효율적인 쿼리를 사용해서 DB 성능이 저하되었을 때 어떻게 해결할 것인가요?