🎓 데이터베이스 설계 & 튜닝 수료 시험

트랙 종합 평가

트랙 전체 모듈에서 무작위로 출제됩니다. 80% 이상 맞히면 통과이며, 통과 시 수료증이 발급됩니다.

Q1 / 15

users 테이블 1억 건에서 WHERE email = 'user@example.com' 을 조회한다. email 컬럼에 B-Tree 인덱스가 없을 때와 있을 때의 차이를 가장 잘 설명한 것은?

Q2 / 15

아래 코드를 실행했더니 같은 트랜잭션 안에서 SELECT를 두 번 했는데 결과가 달랐습니다. PostgreSQL 기본 설정에서 이것이 가능한 이유는? BEGIN; SELECT count(*) FROM orders WHERE status = 'pending'; -- 결과: 10 -- (다른 트랜잭션이 pending 주문 3건을 처리해서 COMMIT) SELECT count(*) FROM orders WHERE status = 'pending'; -- 결과: 7 COMMIT;

Q3 / 15

SELECT * FROM orders WHERE status = 'PENDING'이 수천 건 테이블에서 느리다. EXPLAIN을 실행했더니 type: ALL이 나왔다. 무엇이 문제이고 어떻게 해결하는가?

Q4 / 15

아래 쿼리를 users 1만 건 테이블에 실행했더니 EXPLAIN 결과 orders 테이블을 1만 번 조회했다. 왜 그런가? ```sql SELECT u.name, (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count FROM users u ```

Q5 / 15

[심화] 메타데이터만 바꿔 밀리초면 끝날 ALTER TABLE ADD COLUMN(nullable, DEFAULT 없음)을 운영 중 실행했더니, 그 순간 해당 테이블을 읽는 모든 조회까지 함께 멈췄다. 가장 큰 이유는?

Q6 / 15

같은 스키마 변경을 Oracle, PostgreSQL, MySQL 세 환경에 모두 배포해야 한다. SQL 방언(dialect) 차이 때문에 환경마다 다른 SQL을 유지하기 어렵다. 하나의 변경 정의로 여러 DB를 지원하고 싶다면 어떤 도구가 더 적합한가?

Q7 / 15

[심화] ERD의 1:N 관계선을 FK로 구현할 때, N쪽(자식)의 FK 컬럼에 별도로 인덱스를 만들어 주는 것이 중요한 이유는?

Q8 / 15

psql로 운영 DB에 접속 후 마이그레이션이 제대로 적용됐는지 확인하려 합니다. 현재 데이터베이스의 모든 테이블 목록을 보고, users 테이블의 컬럼 구조를 확인하는 올바른 명령 순서는?

Q9 / 15

주문 내역 조회와 사용자 조회를 자주 INNER JOIN해야 하는 서비스에서 가장 적합한 DB는?

Q10 / 15

저장 프로시저(SP)의 현대 개발에서 주요 단점은?

Q11 / 15

[심화] 대량 UPDATE를 청크로 나눠 문제없이 끝냈는데, 이후 그 테이블 조회가 전보다 느려졌다. 원인을 확정하려고 가장 먼저 볼 것은?

Q12 / 15

Replica의 복제 지연(replication lag)을 운영 중 직접 확인하려면?

Q13 / 15

복합 기본키(Composite Primary Key)를 사용하기 가장 적합한 경우는?

Q14 / 15

EXPLAIN ANALYZE 출력에서 'rows=1000000 (actual rows=3)'라면 어떤 문제가 있는가?

Q15 / 15

3NF 위반의 대표적인 예시는?

0 / 15 답변