EnjoyCSStudy / CS-Knowledge-Source

0 stars 0 forks source link

240206 Database Interview Question #15

Open skydreamer21 opened 8 months ago

skydreamer21 commented 8 months ago

DB Interview Question 달아주세요!

DB Question 내역

skydreamer21 commented 8 months ago

foriegn key를 사용했을 때의 장단점에 대해 설명해주세요.

BaeYoungSuk commented 8 months ago

DELETE, TRUNCATE. DROP의 차이에 대해 설명해주세요.

soun997 commented 8 months ago

UNDO와 REDO의 공통점과 차이점에 대해 설명해주세요.

rt3310 commented 8 months ago

db 병목현상 발생 시, 가능한 원인과 그 원인의 해결 방법에 대해 3가지 정도 설명해주세요

BaeYoungSuk commented 8 months ago

foriegn key를 사용했을 때의 장단점에 대해 설명해주세요.

외래키는 데이터의 정합성을 유지할 수 있고, 테이블 간의 관계를 명확히 파악할 수 있다는 장점이 있습니다. 반면 외래키로 인해 성능이 저하될 수 있다는 단점이 있습니다.

DELETE, TRUNCATE. DROP의 차이에 대해 설명해주세요.

DELETE는 행 일부 또는 전체 데이터를 제거합니다. TRUNCATE는 행 전체 데이터 뿐만 아니라 행이 저장되어 있던 공간과 인덱스도 삭제합니다. DROP은 인덱스, 행 데이터 뿐만 아니라 테이블 전체를 삭제합니다.

UNDO와 REDO의 공통점과 차이점에 대해 설명해주세요.

둘의 공통점은 복구를 한다는 점입니다. 하지만 REDO는 복구를 할 때 사용자가 했던 작업을 그대로 다시 하지만, UNDO는 사용자가 했던 작업을 반대로 진행한다는 차이가 있습니다.

db 병목현상 발생 시, 가능한 원인과 그 원인의 해결 방법에 대해 3가지 정도 설명해주세요

  1. 많은 사용자의 서비스 등록
    • Secondary 복제본 등을 이용해 읽기/쓰기를 분리하거나, 검색에 최적화된 인덱스 사용을 고려할 수 있습니다.
  2. 단기간 동안의 사용자 요청 증가
    • Auto Scaling이 해결책이 될 수 있습니다.
  3. 배치 작업을 진행하는 데이터베이스
    • 배치 작업으로 인한 성능 저하를 고려합니다.
rt3310 commented 8 months ago

foriegn key를 사용했을 때의 장단점에 대해 설명해주세요.

데이터 무결성을 지키기 위한 제약을 걸 수 있다는 장점이 있다. 다만 데이터 구조 변경 시 어려움이 생기고 성능에 영향이 갈 수 있는 단점이 있다.

DELETE, TRUNCATE. DROP의 차이에 대해 설명해주세요.

DELETE 명령어는 데이터는 지워지지만 테이블 용량은 줄어 들지 않는다. 원하는 데이터만 지울 수 있다. 삭제 후 잘못 삭제한 것을 되돌릴 수 있다. TRUNCATE 명령어는 용량이 줄어 들고, 인덱스 등도 모두 삭제 된다. 테이블은 삭제하지는 않고 데이터만 삭제하며 한꺼번에 다 지운다. 삭제 후 되돌릴 수 없다. DROP 명령어는 데이블 전체, 공간, 객체를 삭제한다. 삭제 후 되돌릴 수 없다.

UNDO와 REDO의 공통점과 차이점에 대해 설명해주세요.

장비에 장애가 발생하거나 인스턴스가 비정상 종료했을 때는 REDO와 UNDO를 사용해서 데이터를 복구하고, 커밋하지 않은 데이터의 롤백을 수행할 수 있다. REDO는 오래된 데이터를 최신 데이터로 만들기 위해 존재한다. UNDO는 최신 데이터를 오래된 데이터로 만들기 위해 존재한다.

db 병목현상 발생 시, 가능한 원인과 그 원인의 해결 방법에 대해 3가지 정도 설명해주세요

먼저 크게 DB 설계 문제, DB 사용 애플리케이션 문제, 서버 리소스 부족 문제가 있을 수 있다. DB 설계에서는 대표적으로 인덱스 문제가 있을 수 있다. 이때 query log를 확인하고 느린 query에 인덱스 적용 및 수정하여 해결할 수 있다. 애플리케이션에는 갱신 시 락 발생이 있을 수 있다. 이때 갱신 쿼리가 무거울 수 있기 때문에, 갱신이 집중되는 레코드가 있을 경우 DB 사용 정책을 검토하여 해결방안을 마련할 수 있다. 서버 리소스 부족 문제로 병목현상이 발생할 수 있다. 이때 CPU, 메모리, 스토리지 용량을 체크하여 스케일 업을 고려해볼 수 있다.