면접준비[프론트,백,데이터,CS]/InterView 준비 [ DB,데이터,클라우드 ]

[ DB & SQL(RDBMS, NoSQL) 면접 준비 ] DB/SQL 면접 준비 02

안다미로 : Web3 & D.S 2024. 12. 17. 17:46

 

 

 

 

[ 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는 범위 검색에 유리하고, 해시 테이블은 특정 값 검색에 매우 빠른 성능을 제공합니다.

이러한 인덱스 구조를 적절히 활용함으로써 데이터베이스의 성능을 극대화할 수 있습니다.

 


          ◎  인덱스 선택 기준.

   

                             ● 자주 실행되는 쿼리 분석

                             ● 높은 카디널리티(고유값)을 가진 열 선택

                             ● 조인, 검색, 정렬 작업에 자주 사용되는 열 고려

                             ● 복합 인덱스 활용.