DBMS가 복잡해지는 이유 | 다양한 기능

2025. 1. 11. 19:16DBMS/ORACLE Admin

반응형
 

DBMS가 복잡해지는 이유에 대한 상세 설명 (Oracle 아키텍처와 관련하여)

Oracle과 같은 DBMS는 단순히 데이터를 저장하고 조회하는 기능뿐만 아니라, 데이터 무결성, 동시성 제어, 고가용성, 성능 최적화를 모두 만족해야 하기 때문에 내부 구조가 매우 복잡해진다.


1. 동시성 제어와 Lock 메커니즘

Oracle DBMS는 다수의 사용자(세션)가 동시에 데이터를 읽고 쓰는 상황을 처리 한다.

  • 문제점: 여러 트랜잭션이 동시에 같은 데이터에 접근할 경우, 충돌(경쟁 상태)이 발생할 수 있다. 이를 해결하지 않으면 데이터의 일관성(Consistency)과 정합성(Correctness)이 깨진다.
  • 해결 방안: 이를 방지하기 위해 Lock을 사용한다. Lock은 데이터에 대해 하나의 트랜잭션이 작업하는 동안 다른 트랜잭션이 동시에 작업하지 못하게 막는 기능이다.
    • Row-Level Lock: Oracle은 성능 저하를 최소화하기 위해 행 단위의 잠금을 지원한다.
    • Lock으로 인한 문제:
      • Deadlock(교착 상태): 두 개 이상의 트랜잭션이 서로를 기다리면서 무한 대기 상태에 빠지는 문제.
      • Blocking(차단): 하나의 트랜잭션이 잠금을 오래 유지하면 다른 트랜잭션이 대기해야 하므로 응답 시간이 느려진다.
  • Optimistic Locking vs Pessimistic Locking: Oracle은 충돌 가능성이 낮은 경우, 잠금을 최소화하는 낙관적 동시성 제어(Optimistic Locking) 전략도 지원한다.

2. Redo Log와 Undo Tablespace

Oracle은 데이터를 변경할 때 트랜잭션 무결성을 보장하기 위해 Redo 로그Undo 테이블스페이스를 사용한다.

  • Redo 로그: 모든 데이터 변경 사항을 기록하여 장애 발생 시 복구할 수 있도록 한다.
  • Undo 테이블스페이스: 데이터 변경 이전 상태를 기록하여 롤백(Undo)하거나 다른 세션이 읽을 때 일관된 읽기(Consistent Read)를 제공할 수 있도록 한다.
  • 성능 문제:
    • Redo 로그와 Undo 데이터의 기록이 과도하게 많아지면 I/O 병목이 발생하여 성능이 저하될 수 있다.
    • 이를 해결하기 위해 Oracle은 Redo 로그를 LGWR(Log Writer) 프로세스를 통해 비동기적으로 기록하며, Undo Tablespace의 크기를 적절히 관리해야 하다.

3. 캐시 메커니즘과 SGA (System Global Area)

Oracle은 I/O 성능을 최적화하기 위해 메모리에 데이터를 캐시하는 구조를 사용하다.

  • Buffer Cache: 디스크 I/O를 줄이기 위해 자주 사용하는 데이터를 메모리에 캐싱하여 성능을 향상시킵니다.
  • Library Cache: SQL 문과 실행 계획을 캐싱하여 같은 SQL 문이 실행될 때 재사용할 수 있도록 하다.
  • Shared Pool: 파싱된 SQL, PL/SQL 코드 및 데이터 딕셔너리 정보를 저장하다.
  • 문제점:
    • SGA 크기가 적절하지 않으면 캐시 미스(Cache Miss)가 자주 발생하여 성능이 저하된다.
    • 너무 많은 SQL 문이 들어오거나 비효율적인 쿼리가 실행될 경우, Library Cache에서 Latch 경합(Latch Contention) 문제가 발생할 수 있다.

4. ASM (Automatic Storage Management)

Oracle은 고가용성과 성능을 위해 ASM(Automatic Storage Management)을 지원하다.

  • 역할: ASM은 디스크 그룹을 관리하고 데이터를 자동으로 스트라이핑(Stripping)하고 미러링(Mirroring)하여 성능과 가용성을 높인다.
  • 복잡성: ASM은 데이터 파일을 관리하는 방식이 기존 파일 시스템과 다르며, 관리자가 ASM 디스크 그룹을 적절히 설정하지 않으면 성능에 악영향을 줄 수 있다.

5. RAC (Real Application Clusters)

Oracle RAC는 다중 인스턴스가 하나의 데이터베이스를 공유하여 고가용성(HA)과 확장성(Scalability)을 제공하다.

  • 복잡성 증가 요인:
    • RAC 환경에서는 Cache Fusion이라는 메커니즘을 통해 각 인스턴스의 캐시 데이터를 동기화해야 하다.
    • 네트워크를 통해 데이터 블록을 주고받기 때문에 네트워크 병목이 성능에 영향을 줄 수 있다.
    • 여러 인스턴스가 동시에 작업하기 때문에 Lock 및 동기화 관리가 더욱 복잡해진다.

6. Archivelog 모드

Oracle은 Archivelog 모드에서 동작할 때, Redo 로그를 아카이브하여 장애 복구와 PITR(Point-In-Time Recovery)을 지원하다.

  • 장점: 모든 변경 내역을 보존하기 때문에 데이터 손실 없는 복구가 가능하다.
  • 복잡성:
    • Archivelog 모드에서는 Redo 로그 파일이 다 차면 자동으로 아카이브를 생성해야 하며, 이 과정에서 추가적인 I/O 작업이 발생하여 성능에 영향을 줄 수 있다.
    • 아카이브 파일을 적절히 관리하지 않으면 디스크 공간이 부족해지고, 데이터베이스 중단이 발생할 수 있다.

 

반응형

'DBMS > ORACLE Admin' 카테고리의 다른 글

자동 undo 관리  (0) 2025.01.11
Redo Log Files와 Archived Redo Log Files  (0) 2025.01.11
언두 데이터의 읽기 일관성  (0) 2025.01.11
오라클 사용법  (0) 2025.01.11
오라클 아키텍쳐 01  (0) 2024.11.02