[ DB & SQL(RDBMS, NoSQL) 면접 준비 ] DB/SQL 면접 준비 02
)
Ⅰ. 트리거(Trigger)에 대해서 설명해주세요.
◆ 트리거(Trigger)는 데이터베이스에서 특정 테이블에 대한 이벤트가 발생했을 때 자동으로 실행되는 프로그램입니다.
주로 [ INSERT, DELETE, UPDATE] 와 같은 DML(데이터 조작어) 문이 수행될 때 작동합니다.
@ 트리거의 가장 큰 특징은 사용자가 직접 호춯하지 않고, 데이터베이스시스템이 자동으로 호출한다는 점!
@ 트리거는 데이터 무결성을 유지하고, 비즈니스 로직을 데이터 베이스 레벨에서 구현하는데 유용합니다.
(ex, 데이터가 삽입될 때 자동으로 로그를 기록하거나, 다른 테이블의 데이터를 업데이트 하는 등의 작업 수행)
◇ 트리거의 장점.
1. 자동화
: 특정 이벤트에 대한 반응을 자동으로 처리하여, 수동으로 작업할 필요를 줄입니다.
2. 무결성 유지
: 데이터의 일관성을 보장하고, 잘못된 데이터 입력을 방지할 수 있습니다.
3. 비즈니스 로직 구현
: DB 내에서 비즈니스 규칙을 적용하여, 애플리케이션 코드와의 분리를 통해 유지보수성을 높입니다.
Ⅱ. Index에 대해 설명해주시고, 장/단점에 대해 말해주세요.
◆ 인덱스(Index)는 데이터베이스에서 데이터를 효율적으로 검색하기 위해 사용되는 데이터 구조입니다.
● 인덱스는 테이블의 특정 열(Column)에 대한 포인터 역할을 하여서,
전체 테이블을 처음부터 끝까지 검색하는 FTS(Full Table Scan) 방식보다
훨씬 빠르게 원하는 데이터를 찾을 수 있도로 도와줍니다.
● 데이터베이스가 책이라면, 데이터는 책의 내용이고, 인덱스는 책의 목차나 색인과 같아서
특정 정보를 찾는 데 필요한 페이즈 번호를 제공합니다.
◇ 인덱스의 장점.
1. 빠른 검색 속도
- 인덱스는 정렬된 상태를 유지하므로, 특정 값을 검색할 때 훨씬 빠른 성능을 제공합니다.
- 대량의 데이터에서 원하는 정보를 신속하게 찾을 수 있게 해줍니다.
2. 효율적인 쿼리 성능
- WHERE 절이나 JOIN 조건에서 사용되는 열에 인덱스를 설정하면, 쿼리 성능이 크게 향상됩니다.
- 특히 대규모 데이터베이스에서 그 효과가 두드러집니다.
3. 정렬 및 그룹화 성능 향상
- 인덱스는 데이터 정렬 및 그룹화 작업을 수행할 때도 유리합니다.
- 인덱스가 정렬된 상태로 유지되기 때문에, 이러한 작업이 더 빠르게 수행 가능.
◇ 인덱스의 단점.
1. 쓰기 성능 저하
- 인덱스를 추가하거나 삭제, 수정할 때마다 인덱스도 업데이트 해야 하므로,
데이터 삽입*삭제*수정 시 성능이 저하될 수 있습니다.
- 빈번한 데이터 변경이 발생하는 경우에 문제가 될 수 있습니다.
2. 추가 저장 공간 필요
- 인덱스를 생성하면 추가적인 저장 공간이 필요합니다.
- 데이터베이스의 크기가 커질수록 인덱스가 차지하는 공간도 증가하게 됩니다.
3. 복잡성 증가
- 인덱스 관리가 필요하며, 잘못된 인덱스 설계는 오히려 성능 저하를 초래할 수 있습니다.
- 인덱스를 설계할 때는 신중한 고려가 필요합니다.
Ⅲ. DBMS의 인덱스 관리 전략.
◆ 인덱스(Index) 생성 및 유지 관리.
◎ 자동 인덱스 관리.
● DBMS는테이블의 데이터 변경(삽입, 업데이트, 삭제) 시 자동으로 인덱스를 유지합니다.
● 기본 키(Primary Key) 생성 시, 자동으로 기본 인덱스를 생성합니다.
◎ 인덱스 최적화 방법.
◎ 성능 모니터링.
● 쿼리 실행 계획을 분석하여, 인덱스 효율성을 평가합니다.
● 사용되지 않는 인덱스를 식별하고 제거합니다.
◎ 인덱스 유지보수 전략.
● 인덱스 조각화 모니터링
● 통계 정보 주기적 업데이트.
● 필요에 따라 인덱스 재구성 또는 재빌드.
◎ 인덱스 유형 관리.
◎ 다양한 인덱스 유형.
● B-Tree 인덱스 : 범위 검색에 효과적
● 해시 인덱스 : 정확한 일치 검색에 최적화
● 비트맵 인덱스 : 낮은 카디널리티 데이터에 적합.
1. B+Tree 인덱스
- 구조: B+Tree는 자식 노드가 2개 이상인 B-Tree를 개선한 자료구조입니다. 이 구조는 리프 노드들을 LinkedList로 연결하여 순차 검색을 용이하게 합니다.
- 시간 복잡도: B+Tree는 O(log₂N)의 시간 복잡도를 가지며, 해시 테이블보다 느리지만, 범위 검색과 같은 다양한 쿼리에 유리하여 일반적으로 많이 사용됩니다.
- 장점: B+Tree는 정렬된 데이터를 유지하므로, 범위 검색(예: BETWEEN, >, < 등)과 같은 쿼리에 적합합니다.
2. 해시 테이블 인덱스
- 구조: 해시 테이블은 컬럼의 값으로 생성된 해시를 기반으로 인덱스를 구현합니다. 각 데이터 항목은 해시 함수를 통해 특정 위치에 저장됩니다.
- 시간 복잡도: 해시 테이블은 O(1)의 시간 복잡도를 가지므로, 특정 값을 검색할 때 매우 빠릅니다.
- 단점: 그러나 해시 테이블은 부등호(<, >)와 같은 연속적인 데이터에 대한 순차 검색이 불가능하므로, 범위 검색이 필요한 경우에는 적합하지 않습니다.
결론
DBMS는 B+Tree와 해시 테이블을 통해 인덱스를 관리하며, 각각의 자료구조는 특정 상황에 따라 장단점이 있습니다.
B+Tree는 범위 검색에 유리하고, 해시 테이블은 특정 값 검색에 매우 빠른 성능을 제공합니다.
이러한 인덱스 구조를 적절히 활용함으로써 데이터베이스의 성능을 극대화할 수 있습니다.
◎ 인덱스 선택 기준.
● 자주 실행되는 쿼리 분석
● 높은 카디널리티(고유값)을 가진 열 선택
● 조인, 검색, 정렬 작업에 자주 사용되는 열 고려
● 복합 인덱스 활용.
'면접준비[프론트,백,데이터,CS] > InterView 준비 [ DB,데이터,클라우드 ]' 카테고리의 다른 글
[ DB & SQL(RDBMS, NoSQL) 면접 준비 ] DB/SQL 면접 준비 01 (1) | 2024.12.17 |
---|