[DB] View

nooyji·2021년 11월 5일
0
  1. View란?

뷰의 의미는 하나의 select문과 같다고 생각하면 된다.
물론 뷰를 통해 insert, update, delete가 가능하지만 대개의 경우는 select를 위해 사용한다. 뷰란 한개 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블(virtual table)이다.
뷰는 기존에 생성된 테이블 또는 다른 뷰에서 접근할 수 있는 전체 데이터 중에서 일부만 접근할 수 있도록 제한하기 위한 기법이다.
뷰를 가상 테이블이라하는 이유는 테이블은 디스크 공간이 할당되어 데이터를 저장할 수 있지만, 뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장하고 디스크에 저장 공간이 할당되지 않는다. 하지만 일반 사용자들은 SQL문을 사용하여 테이블에 저장된 데이터를 검색하고 조작하는 것과 유사하게 뷰를 이용할 수 있다.

  • 뷰 자체는 데이터를 갖지 않지만, 기초 테이블의 데이터를 조회하고 수정할 수 있는 창과 같다.
  • 뷰는 데이터 값이 아니라 실제적으로는 질의 문장만을 가진다.
  • 물리적인 테이블을 근거한 논리적인 테이블
  • 뷰는 기본 테이블에서 파생된 객체로서 기본 테이블에 대한 하나의 쿼리문(뷰테이블x, 뷰쿼리o)
  1. View의 장점 및 단점

<장점>

  • DB의 선택적인 부분만 보여주므로 접근을 제한
  • 다양한 접근 경로 설정
  • 복잡한 질의를 단순화
  • 데이터의 독립성 제공
  • 동일한 데이터를 또 다른 뷰로 표현
  • 한 개의 뷰에 여러 테이블의 데이터를 검색 가능
  • 한 개의 테이블로부터 여러 뷰를 생성 가능

<단점>

  • 뷰의 정의를 변경할 수 없고 insert, delete, update에 많은 제한이 있음
  1. View를 사용하는 이유
  • 자주 쓰는 쿼리문을 안 쓰고 테이블만 조회하면 된다.
  • 보안에 유리하다.
  • 뷰 테이블에 자료가 추가되는 것은 실체 테이블에 반영되지 않기 때문에 주의를 요한다.
  1. View에 관한 다른 정보

복합 뷰(Nested View)를 최소화하라
뷰는 엄청난 쿼리를 사용자들로부터 가리는데 훌륭하지만, 하나의 뷰 안에 또 다른 뷰와 내부에 있는 다른 뷰를 (계속해서) 중첩시키다보면 심각한 성능 저하를 유발할 수 있다. 너무 많은 수의 복합 뷰는 모든 쿼리에 대해 엄청난 양의 데이터가 반환(Return) 되는 결과를 초래해서, 데이터베이스 성능을 말 그대로 기어 다니게 만들 수 있다. 혹은, 더 나가서, 쿼리 최적화기(Optimizer)가 포기해서 아무것도 반환되지 않을 수도 있다.

복합 뷰를 풀어내는 것으로 쿼리 응답 시간을 몇 분에서 몇 초로 줄일 수 있다.

원문 : https://sassun.tistory.com/92

0개의 댓글