11장 관계형 데이터베이스의 주요 지식

·2024년 1월 11일
0

모두의 SQL

목록 보기
10/10

뷰 : 가상의 테이블

    • 가상의 테이블
    • 테이블에서 필요로 하는 부분만 선택하여 만들어 놓은 데이터의 집합
  • 뷰의 특징

    • 데이터 가공을 통해 마치 테이블처럼 내용을 보여 줄 수 있음
    • 자주 쓰거나 복잡한 SQL 문의 결과를 미리 만들어 놓을 수 있음
    • 여러 테이블을 조인하여 하나의 뷰로 생성할 수 있음
    • 사용자별로 접근 권한을 다르게 할 수 있음
    • 각기 다른 데이터베이스 시스템에서 각각의 데이터를 전달해야 하는 경우에도 유용함
  • 뷰의 종류

    종류설명비고
    심플 뷰하나의 테이블에서 데이터 생성CREATE VIEW 명령어로 생성
    컴플렉스 뷰여러 개의 테이블을 조인하여 데이터 생성CREATE VIEW 명령어로 생성
    인라인 뷰SELECT 문의 FROM 절에 기술한 SELECT 문1회용 뷰로 권한을 제어할 수 없음
  • employees 테이블과 emp_details_view 뷰를 조인하여 employee_id가 100인 직원의 employee_id, hire_date, department_name, job_title을 출력하기

    SELECT A.employee_id, A.hire_date, B.department_name, B.job_title
    FROM employees A, emp_details_view B
    WHERE A.employee_id = B.employee_id AND A.employee_id = 100;
    • department_name과 job_title을 출력하려면 departments 테이블과 jobs 테이블을 조인해야 해서 복잡하지만 이미 emp_details_view 뷰가 해당 정보를 가지고 있으므로 간단하게 emp_details_view 뷰만 조인하여 원하는 결과를 출력할 수 있음


옵티마이저 : 성능 최적화 관리하기

  • 옵티마이저

    • 실행 계획에 의한 정해진 우선순위 또는 통계 정보를 이용하여 SELECT 문의 질의 성능이 최적화될 수 있도록 실행 계획을 수립하는 데이터베이스 시스템 요소
    • 사용자가 요청한 SELECT 문의 질의에 대해 실행 계획을 세우고 비용(필요한 자원)을 계산하여 최적의 성능을 낼 수 있도록 도와줌
  • 옵티마이저 방식의 종류

    • RBO(Rule Based Optimizer)와 CBO(Cost Based Optimizer)방식이 있음
    • 최적화된 SQL 실행 순서, 실행 방법, 비용 등을 찾아주므로 사용자는 실행 계획을 확인하면서 SQL문을 효율적으로 작성할 수 있음
      구분PBOCBO
      개념사전에 정의된 규칙 기반 계획최소 비용 계산, 실행 계획 수립
      기준실행 우선순위액세스 비용
      성능사용자의 SQL 작성 숙련도옵티마이저 예측 성능
      특징실행 계획의 예측이 용이함저장된 통계 정보의 활용
      고려 사항저효율, 사용자의 규칙 이해도예측 복잡, 비용 산출 공식 정확성

인덱스 : 빠른 검색을 위한 데이터 주소록

  • 인덱스

    • 데이터를 찾기 위한 ‘색인’ (데이터의 주소록)
    • 데이터를 빠르고 효율적으로 조회하기 위해 사용함
    • 데이터베이스 시스템에 의해 자동으로 생성되기도 하고, 사용자가 수동으로 생성하기도 함
  • 인덱스의 특징

    • 테이블의 데이터 값에 빠르게 액세스 하도록 하는 데이터베이스 객체
    • 데이터를 빠르게 찾을 수 있기 때문에 디스크 액세스 횟수를 줄일 수 있음
    • 데이터베이스 시스템이 인덱스를 자동으로 사용하고 유지 보수하므로 사용자는 인덱스를 직접 조작할 필요가 없음
    • 언제든지 생성하거나 삭제할 수 있으며 테이블이나 다른 인덱스에 영향을 주지 않음
    • 인덱스가 많다고 성능이 항상 보장되는 것은 아님
  • employees 테이블에서 employee_id가 100인 직원을 찾는 원리

    • 사용자는 employee_id가 100인 직원의 정보 조회를 오라클 데이터 베이스 시스템에 요청

    • 오라클 데이터 베이스 시스템은 사용자에게 SELECT 문의 질의를 받으면 데이터베이스 메모리 안의 버퍼 캐시를 살펴봄

      버퍼 캐시는 자주 사용되는 테이블의 데이터 정보가 저장되어 있는 일종의 ‘가속 장치’이므로 검색 데이터가 버퍼 캐시 안에 있다면 데이터는 빠르게 조회되어 출력됨

    • 버퍼 캐시에 조회하는 데이터가 없다면 데이터베이스 시스템은 디스크에 저장되어 있는 데이터를 찾아냄

    • 해당 데이터를 버퍼 캐시로 복사함

    • 결과값을 사용자에게 반환함

      ⇒ 즉, 모든 데이터를 버퍼 캐시에 저장하면 좋겠지만 관리 효율성과 자원 비용 때문에 불가함
      결국 대부분의 데이터가 있는 디스크에서 데이터를 검색해야 하는데 데이터 양이 많아질수록 시간이 매우 오래 걸림
      하지만 색인을 사용하면 데이터가 어디에 존재하는지 알려줄 수 있으므로 훨씬 효과적임
      이렇게 데이터가 존재하는 색인 값만 별도로 만들어서 관리하는 기법이 인덱스
      인덱스는 데이터의 검색 속도를 개선하기 위해 테이블의 행을 효율적으로 식별 가능하도록 함

  • 로우 아이디

    • 색인이 접근하는 행을 대표하는 주소 아이디
    • 데이터베이스 시스템에 의해 관리되는 주소 값
  • 인덱스의 종류

    • B 트리 인덱스와 비트맵 인덱스가 있음
    • B 트리 인덱스
      • 데이터의 종류가 많고 동일한 데이터가 적은 경우에 주로 사용

      • 루프 블록부터 리프 블록까지 사용자가 원하는 값을 스무고개하듯이 순차적으로 찾아가는 구조
        (트리 기반 인덱스라고도 부름)

        종류설명사용 예
        unique index중복 데이터가 없는 경우에 사용기본 키, 유일 키 데이터
        non-unique index중복 데이터가 있는 경우에 빠른 검색 결과를 보장인덱스가 필요한 일반적인 데이터
        descending index내림차순 데이터 값으로 인덱스를 생성매출, 최근 일자 등
        composite index여러 열을 합쳐서 하나의 인덱스를 생성여러 조건이 필요한 경우
        (예) 고객 번호 and 성별
    • 비트맵 인덱스
      • B 트리 인덱스와 반대로 데이터의 종류가 적고 동일한 데이터가 많은 경우에 주로 사용
        (예) 회원 가입 여부, 성별, 양력/음력 등
      • 데이터 변경 빈도가 낮은 경우 유리함

0개의 댓글