Database

데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법

백엔드 유성 2023. 12. 26. 18:41

프로시저와 함수 뷰의 차이점을 설명드리겠습니다.

 

1. 프로시저

  • 프로시저(Procedure)는 데이터베이스의 데이터에 대한 작업을 수행하기 위한 목적으로 사용됩니다. 이것은 데이터의 추가, 수정, 삭제, 검색 등과 같은 다양한 데이터 조작 작업을 수행하는 데 사용됩니다.
  • 비즈니스 룰 검증, 트랜잭션 관리, 보안 제어 등과 같은 데이터베이스 관리 작업에도 활용됩니다.

프로시저는 무엇을 return하는 것 보다 데이터를 조작하기 위해 사용됩니다. 그런 이유로 리턴값이 없는 프로시저가 일반적입니다.

 

2. 함수

  • 함수(Function)는 주로 값을 계산하거나 가공하기 위해 사용됩니다.
  • 함수는 return 값으로 단일 값(숫자 또는 문자열)을 제공하는 것이 일반적입니다.
  • 함수는 입력 값을 받아서 계산하고, 그 결과 값을 반환합니다. 예를 들어, 날짜 형식을 변경하거나 숫자 값을 처리하는 데 함수를 사용할 수 있습니다.
  • 함수는 데이터베이스 내에서 데이터를 직접 조작하지 않으며, 주로 데이터의 변환 또는 가공에 중점을 두고 있습니다.

함수는 호출 시 미리 작성된 쿼리문으로 계산하여 결과를 return 합니다. 프로시저와는 다르게 데이터를 조작하는 것 보다 쿼리를 미리 작성해서 해당 쿼리의 결과를 return하기 위해서 사용됩니다.

 

3. 뷰

  • 뷰(View)는 함수와 같이 값을 계산하거나 가공하기 위해 사용됩니다.
  • 뷰는 return 값으로 가상의 테이블을 제공하는 것이 일반적입니다.
  • 함수와 다른점이 있다면 함수는 단일값(스칼라값)을 return 하지만 뷰는 테이블값을 return 한다는 차이점이 있습니다.
  • 값이 가공되는 시점에 대해서는 아래 한번 더 언급하겠습니다.

가상의 테이블을 만들어 사용하며, 쿼리 실행 시 실시간으로 데이터를 계산하여 결과를 제공합니다. 미리 계산된 결과를 저장하지 않고, 동적으로 생성합니다.

 

 

간단하게 위과 같이 역할을 나눌 수 있고, 각각의 특징과 주의할점을 알아보겠습니다.

 

1. 프로시저 특징 / 주의할점

  • 일반적으로 복잡한 쿼리를 프로시저로 사용하는 만큼 사용 전 테스트 및 커밋 롤백등의 트랜잭션을 올바르게 적용해야 합니다.
  • 트랜잭션을 지원합니다.
  • 쿼리가 너무 복잡할 경우 부하가 발생할 수 있습니다. (주의)

2. 함수 특징 / 주의할점

  • 기존 테이블 값을 변경하지 않도록 주의해야합니다.

3. 뷰 특징 / 주의할점

  • 가상 테이블을 생성하여 데이터를 표현합니다.
  • 뷰를 통한 데이터 변경시 기본 테이블에 영향을 줄 수 있으니 조심해야 합니다.
  • 쿼리가 너무 복잡할 경우 부하가 발생할 수 있습니다. (주의)
  • 뷰는 return할 가상 테이블을 가지고 있는데 가상테이블에는 "계산된 결과"가 아닌 "계산할 식"을 가지고 있습니다. 뷰가 호출되면 "계산할 식"을 계산하여 "계산된 결과"를 return합니다.

 

모든 기능이 다 그렇듯 사용하기 전 테스트 및 실행계획을 통해 성능을 미리 테스트 해보시고 사용해주세요.

 

 

기능/특징 프로시저(Procedure) 함수(Function) 뷰(View)
목적 데이터 조작 및 관리 값 계산 및 반환 데이터 조회 및 가상 테이블 조회
반환 값 일반적으로 반환값이 없음 일반적으로 단일값을 반환 일반적으로 테이블을 반환
호출 방식 `CALL` 명령어 사용 쿼리 내에서 호출 쿼리 내에서 호출
변수 사용 로컬 변수 및 매개변수 사용 로컬 변수 및 매개변수 사용 없음
데이터 수정 가능 가능 불가능 불가능
트랜잭션 관리 가능 불가능 불가능
보안 및 권한 관리 가능 가능 가능
예시 데이터 업데이트, 비즈니스 룰 검증 날짜 및 숫자 계산, 문자열 조작 복잡한 조회 쿼리