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 원칙
- Atomicity (원자성) → 트랜잭션은 모두 수행되거나, 전혀 수행되지 않음
- Consistency (일관성) → 트랜잭션 완료 후 데이터는 일관된 상태 유지
- Isolation (고립성) → 여러 트랜잭션이 동시에 수행되더라도 서로 간섭하지 않음
- 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. 대용량 데이터를 조회할 때 최적화하는 방법은?
✔ 답변:
- 적절한 인덱스 활용 (Clustered Index, Composite Index)
- Partitioning (파티셔닝) 적용하여 데이터 분할
- LIMIT 사용하여 불필요한 데이터 조회 방지
- JOIN 최적화 (Nested Loop 대신 Hash Join 활용)
- 서브쿼리 대신 CTE(Common Table Expression) 사용
- 실행 계획(Execution Plan) 분석 후 최적화
- 인덱스를 사용할 때 성능이 오히려 저하될 수 있는 상황은?
- 서브쿼리(Subquery)와 조인(Join)의 차이점 및 언제 사용해야 하는지?
- Group By와 Having의 차이점은?
- 데이터 중복을 제거하는 방법(DISTINCT vs GROUP BY)?
📌 데이터 백업 및 보안
- 데이터베이스 백업 방식(Full, Incremental, Differential)을 설명해주세요.
- 데이터 복구(Recovery) 전략에는 어떤 것들이 있나요?
- 데이터 무결성을 유지하는 방법은?
- 트랜잭션 로그(Transaction Log)의 역할과 활용법은?
- 사용자 접근 권한을 관리하는 방법은?
📌 장애 대응 및 실무 경험
7. 데이터베이스 장애가 발생하면 어떻게 대응할 것인가?
✔ 답변:
- 장애 유형 파악 → CPU/메모리/디스크 과부하, Lock/Deadlock, 네트워크 문제 등
- 로그 분석 → MySQL SHOW PROCESSLIST, EXPLAIN ANALYZE 활용
- 즉각적인 해결 → 긴급 쿼리 중단, 트랜잭션 롤백, 복구 작업 수행
- 장기적인 개선책 마련 → 성능 튜닝, 인덱스 최적화, 하드웨어 업그레이드 등
8. MySQL에서 Deadlock이 발생하는 원인과 해결 방법은?
✔ 답변:
Deadlock(교착 상태)은 서로 다른 트랜잭션이 동일한 리소스를 점유하고 있어 영원히 대기하는 상태
📌 원인:
- 트랜잭션이 여러 테이블을 다른 순서로 잠금(Locking)
- 한 트랜잭션이 완료되지 않았는데 다른 트랜잭션이 동일한 자원을 점유
- 인덱스 미사용으로 인해 테이블 Lock 증가
📌 해결 방법:
- 트랜잭션 실행 순서 조정
- 락 타임아웃(innodb_lock_wait_timeout) 설정
- 적절한 인덱스 활용하여 Locking 최소화
- 트랜잭션 크기를 작게 유지하여 Lock 지속 시간 줄이기
- 대량의 데이터를 처리하는 과정에서 성능 문제가 발생한 적이 있나요? 어떻게 해결했나요?
- 데이터베이스 성능 튜닝을 수행한 경험이 있다면 설명해주세요.
- DB 성능 개선을 위한 Query 튜닝 경험이 있나요?
- 만약 실시간 서비스에서 DB가 다운되었다면, 가장 먼저 확인해야 할 사항은?
- 데이터베이스 마이그레이션(Migration) 경험이 있나요?
2️⃣ 실무 및 협업 관련 질문
- DBA와 개발자(Backend, Data Engineer) 간의 협업 경험이 있나요?
- DBA의 역할이 개발팀, 인프라팀과 어떻게 연결된다고 생각하나요?
- 데이터 모델링을 진행할 때 가장 중요하게 고려해야 할 점은?
- 대규모 트래픽을 처리할 수 있도록 DB를 설계해야 한다면 어떤 방식을 적용할 수 있을까요?
- 모니터링 및 로그 분석 경험이 있나요? 어떤 도구를 사용해봤나요?
4️⃣ 인성 및 상황 질문
- 본인의 장점과 단점은 무엇인가요?
- 이전 직무(경험)와 DBA가 어떻게 연결된다고 생각하나요?
- 프로젝트에서 팀원과 의견이 충돌했던 경험이 있나요? 어떻게 해결했나요?
- 실무에서 예상치 못한 문제가 발생했을 때 어떻게 대처했나요?
- DBA 업무에서 가장 중요하다고 생각하는 요소는 무엇인가요?
- 빠르게 변화하는 IT 환경에서 DBA가 어떻게 적응해야 한다고 생각하나요?
- 데이터베이스 장애가 심각한 상황이라면 어떻게 우선순위를 정해서 대응하나요?
- 개발자가 비효율적인 쿼리를 사용해서 DB 성능이 저하되었을 때 어떻게 해결할 것인가요?
'STUDY' 카테고리의 다른 글
[기초 정리] 금융·경제 상식 / 전산이론 (1) | 2025.02.22 |
---|---|
[자격증] AICE PROFESSIONAL (0) | 2024.12.14 |
[자격증] 빅데이터 분석 기사 실기 준비 (2) | 2024.11.16 |
[자격증] ADsP 준비 (4) | 2024.11.02 |
[자격증] 정보처리기사 실기 준비 (4) | 2024.10.17 |