Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- GitOps
- 백엔드
- helm
- grafana
- JPA
- mysql
- prometheus
- docker
- Java
- spring boot
- NIO
- 성능최적화
- CloudNative
- jvm
- Kotlin
- 데이터베이스
- RDBMS
- selector
- 동시성제어
- redis
- 트랜잭션
- monitoring
- netty
- 백엔드개발
- Kubernetes
- SpringBoot
- webflux
- DevOps
- 성능 최적화
- kafka
Archives
- Today
- Total
유성
데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법 본문
프로시저와 함수 뷰의 차이점을 설명드리겠습니다.
1. 프로시저
- 프로시저(Procedure)는 데이터베이스의 데이터에 대한 작업을 수행하기 위한 목적으로 사용됩니다. 이것은 데이터의 추가, 수정, 삭제, 검색 등과 같은 다양한 데이터 조작 작업을 수행하는 데 사용됩니다.
- 비즈니스 룰 검증, 트랜잭션 관리, 보안 제어 등과 같은 데이터베이스 관리 작업에도 활용됩니다.
프로시저는 무엇을 return하는 것 보다 데이터를 조작하기 위해 사용됩니다. 그런 이유로 리턴값이 없는 프로시저가 일반적입니다.
2. 함수
- 함수(Function)는 주로 값을 계산하거나 가공하기 위해 사용됩니다.
- 함수는 return 값으로 단일 값(숫자 또는 문자열)을 제공하는 것이 일반적입니다.
- 함수는 입력 값을 받아서 계산하고, 그 결과 값을 반환합니다. 예를 들어, 날짜 형식을 변경하거나 숫자 값을 처리하는 데 함수를 사용할 수 있습니다.
- 함수는 데이터베이스 내에서 데이터를 직접 조작하지 않으며, 주로 데이터의 변환 또는 가공에 중점을 두고 있습니다.
함수는 호출 시 미리 작성된 쿼리문으로 계산하여 결과를 return 합니다. 프로시저와는 다르게 데이터를 조작하는 것 보다 쿼리를 미리 작성해서 해당 쿼리의 결과를 return하기 위해서 사용됩니다.
3. 뷰
- 뷰(View)는 함수와 같이 값을 계산하거나 가공하기 위해 사용됩니다.
- 뷰는 return 값으로 가상의 테이블을 제공하는 것이 일반적입니다.
- 함수와 다른점이 있다면 함수는 단일값(스칼라값)을 return 하지만 뷰는 테이블값을 return 한다는 차이점이 있습니다.
- 값이 가공되는 시점에 대해서는 아래 한번 더 언급하겠습니다.
가상의 테이블을 만들어 사용하며, 쿼리 실행 시 실시간으로 데이터를 계산하여 결과를 제공합니다. 미리 계산된 결과를 저장하지 않고, 동적으로 생성합니다.
간단하게 위과 같이 역할을 나눌 수 있고, 각각의 특징과 주의할점을 알아보겠습니다.
1. 프로시저 특징 / 주의할점
- 일반적으로 복잡한 쿼리를 프로시저로 사용하는 만큼 사용 전 테스트 및 커밋 롤백등의 트랜잭션을 올바르게 적용해야 합니다.
- 트랜잭션을 지원합니다.
- 쿼리가 너무 복잡할 경우 부하가 발생할 수 있습니다. (주의)
2. 함수 특징 / 주의할점
- 기존 테이블 값을 변경하지 않도록 주의해야합니다.
3. 뷰 특징 / 주의할점
- 가상 테이블을 생성하여 데이터를 표현합니다.
- 뷰를 통한 데이터 변경시 기본 테이블에 영향을 줄 수 있으니 조심해야 합니다.
- 쿼리가 너무 복잡할 경우 부하가 발생할 수 있습니다. (주의)
- 뷰는 return할 가상 테이블을 가지고 있는데 가상테이블에는 "계산된 결과"가 아닌 "계산할 식"을 가지고 있습니다. 뷰가 호출되면 "계산할 식"을 계산하여 "계산된 결과"를 return합니다.
모든 기능이 다 그렇듯 사용하기 전 테스트 및 실행계획을 통해 성능을 미리 테스트 해보시고 사용해주세요.
| 기능/특징 | 프로시저(Procedure) | 함수(Function) | 뷰(View) |
| 목적 | 데이터 조작 및 관리 | 값 계산 및 반환 | 데이터 조회 및 가상 테이블 조회 |
| 반환 값 | 일반적으로 반환값이 없음 | 일반적으로 단일값을 반환 | 일반적으로 테이블을 반환 |
| 호출 방식 | `CALL` 명령어 사용 | 쿼리 내에서 호출 | 쿼리 내에서 호출 |
| 변수 사용 | 로컬 변수 및 매개변수 사용 | 로컬 변수 및 매개변수 사용 | 없음 |
| 데이터 수정 가능 | 가능 | 불가능 | 불가능 |
| 트랜잭션 관리 | 가능 | 불가능 | 불가능 |
| 보안 및 권한 관리 | 가능 | 가능 | 가능 |
| 예시 | 데이터 업데이트, 비즈니스 룰 검증 | 날짜 및 숫자 계산, 문자열 조작 | 복잡한 조회 쿼리 |
'Database' 카테고리의 다른 글
| 안정성과 성능 최적화를 위한 Java와 데이터베이스에서의 Lock 전략 (1) | 2024.10.13 |
|---|---|
| MySQL 8에서 인덱스 성능 극대화: 알고리즘과 실전 사례 (0) | 2023.12.26 |
| 트랜잭션 격리 수준의 종류와 성능 최적화 전략 (0) | 2023.09.02 |
| Redis 트랜잭션: MULTI부터 EXEC까지 트랜잭션 처리 과정 (0) | 2023.08.04 |
| Redis에서 데이터 영구 보존: 스냅샷과 AOF로 안전한 복구 시스템 구축 (0) | 2023.08.04 |