데이터 엔지니어링/SQL

[PL/SQL] 프로시저란? 프로시저의 장/단점

안용감한호랑이 2023. 10. 31. 00:36

해당 글은 Oracle의 공식 Document를 보고 작성하였습니다.

경로

 

프로시저란?

프로시저는 SQL을 확장하여 고성능의 트랜잭션 처리 언어이다.

즉 트랜잭션의 특징인 원자성, 일관성, 독립성, 영속성을 가지며 데이터의 상태를 변화시키기 위해 일련의 절차를 작성한 프로그램이다.

더 쉽게 정리하자면 데이터베이스 내부에 SQL명령문(INSERT, SELECT, DELETE, UPDATE)의 수행 로직을 하나의 함수처럼 실행하기 위해 RDBMS에 저장한 쿼리의 집합이다.

 

 

 

프로시저의 장점

  1. SQL과 유사하다.
    • 프로시저는 모든 SQL 데이터의 조작, 커서제어, 트랜잭션 제어, SQL 함수 등을 사용할 수 있다.
    • 프로시저는 SQL의 데이터 유형을 사용하여 SQL과 형변환 등이 필요 없다.
    • 프로시저는 정적 SQL과 동적 SQL 모두 지원한다.
  2. 고성능
    • 프로시저는 명령문 블록을 데이터베이스로 보내 애플리케이션과 데이터베이스 간의 트래픽을 크게 줄일 수 있다.
    • 변수를 전달하여 사용할 수 있다.
    • 프로시저는 반복적으로 호출할 수 있는 실행 파일 형식으로 저장되기 때문에 데이터베이스 서버에서 네트워크를 통한 단일 호출로 대규모 작업을 시작할 수 있다.
    • 프로시저 컴파일러를 통해 최적화 할 수 있다.
  3. 높은 생산성
    • 프로시저에는 설계 및 디버깅 시간을 절약해 주는 많은 기능이 있다.
    • 프로시저를 사용하면 데이터 조작을 위한 간결한 코드를 작성할 수 있다.
  4. 이식성
    • 프로시저는 Oracle 개발을 위한 이식이 가능한 언어이다.
    • Oracle Database가 실행되는 모든 운영 체제에서 프로시저를 동일하게 실행할 수 있다.
  5. 확장성
    • 프로시저는 데이터베이스 서버에 응용프로그램 처리를 중앙 집중화 하여 확장성을 높인다.
    • 공유 서버의 공유 메모리 기능을 통해 Oracle Database는 단일 노드에서 수천 명의 동시 사용자를 지원할 수 있다.
  6. 관리성
    • 프로시저는 각 클라이언트 시스템에 복사본으로 유지하는 것이 아닌 데이터베이스 서버에서 관리할 수 있기 때문에 효율성이 향상된다.
  7. 객체 지향 프로그래밍 지원
    • 프로시저는 객체 지향 설계에 사용할 수 있는 객체 유형을 정의할 수 있다.

 

 

위 장점은 오라클에서 "주장"하는 장점이지만 실제 개발 영역에서는 적용되지 않을 수 있습니다.

 

 

프로시저의 단점

  1. 관리성
    • 프로시저는 데이터베이스 서버에서 관리할 수 있기 때문에 관리의 효율성이 향상된다고 하지만 형상 관리의 힘듦은 더욱 단점이다.
    • 프로시저가 수정된 경우 여러 곳에서 사용된다면 영향도 분석이 어렵다.
  2. 성능
    • SQL에서는 프로시저가 빠르지만 문자, 숫자 연산이 들어간다면 C나 Java보다 성능이 느리다.
  3. 개발난이도
    • 하나의 프로시저에서 다른 프로시저를 호출하며 비즈니스 로직까지 구현되어 있는 경우 프로그램의 순서 트랜잭션의 여부 등이 다방면으로 고려되어야 한다.
    • 이는 유지 보수 단계에서 상당한 난이도를 요구하게 된다.

 

 

 

 

새로운 프로젝트에서 프로시저 개발을 하게 되어 급하게 관련 공부를 하며 정리하였습니다.

'데이터 엔지니어링 > SQL' 카테고리의 다른 글

[PL/SQL] 프로시저 언어 기초(1)  (0) 2023.11.02
[PL/SQL] 프로시저의 주요 기능  (1) 2023.11.01