본문 바로가기
Data Analysis/정보처리기사

[3과목 데이터베이스 구축] 04. SQL 응용

by suvii 2024. 4. 19.

[Sec 1. 절차형 SQL]

저장 프로시저 : 일련의 SQL 쿼리를 하나의 함수처럼 실행하기 위해 (미리)만든 쿼리의 집합
- 장점 : 데이터베이스 보안 향상, 네트워크 소요 시간 절감, 개발 업무 구분, 유지 보수의 용이
- 단점 : 낮은 처리 성능(복잡한 비즈니스 규칙과 제약의 강화)

 

트리거 : 테이블에서 발생하는 이벤트(INSERT, UPDATE, DELETE)에 반응하여 자동으로 실행

  • 유형
    • 문장 트리거 : 한 번만 실행
    • 행 트리거 : FOR EACH ROW
  • 실행 시기
    • AFTER : 이벤트 발생 후 실행
    • BEFORE : 이벤트 발생 전 실행

사용자 정의 함수 : DBMS 안에 독립된 데이터베이스 객체로 저장된 함수로, SELECT문이나 프로시저 안에서 호출되어 수행되고 결과를 반환하기 위한 용도로 사용

 

** 저장 프로시저, 트리거, 사용자 정의 함수는 데이터 처리를 단계별로 기술하는 절차적 언어로 작성된다.

 

 

[Sec 2. 병행제어와 회복]

병행제어 : 여러 트랜잭션이 동시에 실행되면서도 데이터베이스의 일관성을 유지하는 기법

  • 병행제어 미 수행 시 문제점
    • 갱신 분실 : 여러 트랜잭션이 동시에 같은 데이터를 수정할 때, 한 트랜잭션의 변경 결과가 다른 트랜잭션에 의해 덮어 쓰여 손실되는 현상
    • 비완료 의존성 : 실패한 트랜잭션이 회복 전에 다른 트랜잭션이 그 결과를 참조하는 현상
    • 모순성 : 하나의 트랜잭션이 여러 개의 데이터에 대해 변경 연산을 실행했을 때, 일관성이 유지되지 않는 데이터베이스로부터 데이터를 가져와 연산을 실행할 때 발생
    • 연쇄 복귀 : 한 트랜잭션이 실패해 롤백되면, 다른 트랜잭션도 함께 롤백되는 현상
  • 병행제어 기법
    • 로킹(Locking)
      로킹 단위↓ → 로그 수↑, 병행성(공유도)↑, 오버헤드(복잡도)↑
      로킹 단위↑ → 로그 수↓, 병행성(공유도)↓, 오버헤드(복잡도)↓
    • 2단계 로킹 규약 : 확장단계(Lock만), 수축단계(Unlock만)
    • 타임 스탬프 : 트랜잭션 간의 처리 순서를 미리 정하는 방법
    • 낙관적 병행제어 : 트랜잭션 종료 시 일괄적으로 검사하는 방법
    • 다중 버전 병행제어 : 여러 버전의 타임스탬프 비교
  • 회복 기법
    • 로그 기반 회복 기법
      - 지연갱신 회복 기법 : REDO만
      - 즉시갱신 회복 기법 : REDO & UNDO
    • 검사점 회복 기법 : 장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복에서 제외, 이후 처리된 트랜잭션은 회복 작업 수행
    • 그림자 페이징 회복 기법 : Shadow Page Table → 성공 시 삭제, 실패 시 사용
    • 미디어 회복 기법 : 별도 저장 장치에 덤프(Dump)
    • ARIES 회복 기법 : 알고리즘
      분석 → REDO → UNDO